将VBA数组转换为“列”数组

时间:2017-01-04 21:19:35

标签: arrays vba excel-2010

正如我现在所知,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}?

enter image description here

2 个答案:

答案 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