【发布时间】:2017-01-05 08:48:24
【问题描述】:
据我所知,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} ?
【问题讨论】:
-
=SUMPRODUCT(TRANSPOSE(MyRange());{1;1;1})? -
@ScottCraner 如果你想创建一个答案。我会接受的。非常感谢!
-
或者在 VBA 中可能是
INDEX({1;1;1},0,1)或MyRange = Application.Transpose(output) -
@Slai Nice catch 直接在 VBA 中使用 TRANSPOSE。它有效!
标签: arrays vba excel-2010