在我的代码中我需要乘以数组:一个带有flags(数组" minDiffsArr"在#34; 1"在需要的地方有几个colums)而另一个 - 是列,其中我需要检查我的状况(只有变量中具有特定值的行" u")
数组minDiffsArr如下所示:
1
1
1
1
1
1
1
1
......等等
而范围(" T3:T37")看起来像
8
4
6
4
9
1
5
8
和变量" u"值介于1到10之间
我尝试代码:
sheets(2).cells(1, 1) = Evaluate("=SUMPRODUCT(--(" & sheets(1).Range("T3:T" & linesNum + 2).Value & "=" & u & ")," & wsf.Index(minDiffsArr, 0, i) & ")")
但是,它在类型不匹配错误
时失败当我将Watch添加到我的代码中时,它表示两个数组都是变体且具有相同的维度(1到35),所以我无法弄清楚,该公式有什么问题
答案 0 :(得分:1)
假设u
是一维数组,你可以使用类似的东西(你可能需要根据通常在公式中输入数组常量的方式更改Join语句中的分隔符):
sheets(2).cells(1, 1) = sheets(1).Evaluate("=SUMPRODUCT(--(T3:T" & linesNum + 2 & "={" & Join(u, ",") & "}),{" & Join(Application.Transpose(wsf.Index(minDiffsArr, 0, i)), ";") & "})")
如果u
只是一个值变量,那么:
sheets(2).cells(1, 1) = sheets(1).Evaluate("=SUMPRODUCT(--(T3:T" & linesNum + 2 & "=" & u & "),{" & Join(Application.Transpose(wsf.Index(minDiffsArr, 0, i)), ";") & "})")