提问人:Greedo 提问时间:8/2/2017 最后编辑:Greedo 更新时间:8/2/2017 访问量:1712
如何使用 Evaluate 方法计算数组公式
How to evaluate array formulae with the Evaluate method
问:
在 VBA 中,和方法都可用于返回数组:Evaluate()
[]
Dim i As Variant
i = Evaluate("{1,2;3,4}")
i = [{1,2;3,4}]
两行都设置为包含数字 1-4 的 2D 数组。一个附加功能是返回数组的 R1C2 索引元素(即 2 - 同时错误)i
Evaluate(...)(1,2)
[...](1,2)
我想知道是否有任何语法可以以相同的方式评估数组返回工作表函数,例如
i = Evaluate("LEN(A1:A5)>3") 'or similar like [{LEN(A1:A5)>3}]
它应该返回一维数组,就像我在 & 中有超过 3 个字符的文本一样,但事实并非如此。{False,False,False,True,True}
A4
A5
如果没有,是否有另一种计算数组公式以返回完整数组的一行方法?我正在寻找任何提供最小字符数的方法。
答:
3赞
Florent B.
8/2/2017
#1
若要返回数组,需要使用支持数组的函数作为结果。
通常与VBA一起使用的函数是INDEX,因为它不会改变值:
Dim data()
data = Evaluate("INDEX(LEN(A1:A5)>3,)")
评论
1赞
Vityata
8/2/2017
有趣的是,根据输入,它给出了一维或二维数组。例如 是有 2 个维度的,是有 1 个维度的。A1:A5
A1:G1
0赞
Axel Richter
8/3/2017
A1:A5
是列向量,而是行向量。因此,对不同阵列结果的惊讶应该不会那么大。A1:G1
评论
i = Evaluate("ROW(A1:A5)>3")
i = Evaluate("LEN(A1:A5)>2")
i = Evaluate("IF(ROW(A1:A5),LEN(A1:A5)>2)")
Evaluate(ISERROR(A1:A5))