正如我现在所知,Excel中的数组有两种表示形式:
{1,2,3,4} also known as "one-dimensional horizontal array"
和
{1;2;3;4} also known as "one-dimensional vertical array"
我创建了一个返回数组的VBA函数,但是当我在需要数组的函数(SUMPRODUCT)中使用它时,Excel会用逗号显示它。所以它总是把它解释为水平数组。如果我想让产品使用另一个水平阵列,但是当我尝试使用垂直阵列时它不起作用,这很好。
VBA:
Function MyRange()
Dim output(2)
output(0) = 1
output(1) = 1
output(2) = 1
MyRange = output
End Function
Excel中
=SUMPRODUCT(MyRange();{1,1,1}) works
=SUMPRODUCT(MyRange();{1;1;1}) is not working
我的问题?
如何让Excel在第一个数组中显示{1; 1; 1}而不是{1,1,1}?
答案 0 :(得分:2)
使用Tranpose切换它:
=SUMPRODUCT(MyRange();TRANSPOSE({1;1;1}))
答案 1 :(得分:1)
另一个更快的选择是使用“垂直”数组(未测试):
release
或稍慢(也未经过测试):
Function MyRange()
Dim output(1 To 3, 1 To 1)
output(1, 1) = 1
output(2, 1) = 2
output(3, 1) = 3
MyRange = output
End Function