最近在学习evaluate函数,想用它做并行运算,加快速度,遇上一个问题,当evaluate用在countif函数上时,变量是一个区域,该怎么表达?反复实验都没找到解决办法。请教大师出手,谢谢了。
'evaluate并行运算测试
'代码用途:E列公式=COUNTIFS(B:B,"<"&B2),用evaluate取代countif,计算结果存放在D列。
'evaluate测试参数 是一列变量"$B2:$B5",代码怎么表达?
Sub test()
'E列公式=COUNTIFS(B:B,"<"&B2),当用evaluate计算时,当B2是一列变量区域,该怎么表达?。
'求B列中 小于B2值的个数,依此类推B2/B3/B4/B5...
[C:D].ClearContents
s = "$B2:$B5*1"
[C2:C5].Value = Evaluate(s) '可以用s获得B列的值,并且赋值给C列
sfml = "COUNTIFS(B:B,""<""&" & s & ")" '利用s字符串,获取B的符合条件(小于自身,比如小于B2/B3/B4。。。)的个数
Debug.Print sfml 'sfml字符串也是符合规范的
[D2:D5].Value = Evaluate(sfml) 's字符串不起作用了,但是上面[C2:C5]代码中,s是起作用的
'求[D2:D5]时,s被识别为B2,而不是B2:B5,为什么?
End Sub
代码在发附件。谢了各位大师。 [D2:D5].Value = Evaluate("COUNTIFS(B:B,""<"" & s & )") 's字符串不起作用了,但是上面[C2:C5]代码中,s是起作用的
这行代码的S,当它是一个区域变量,该怎么表示(VBA中)? |