VBA:使用数组和变量评估sumproduct

时间:2014-10-01 09:07:41

标签: arrays excel-vba evaluate vba excel

在我的代码中我需要乘以数组:一个带有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),所以我无法弄清楚,该公式有什么问题

1 个答案:

答案 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)), ";") & "})")