2017-05-30 136 views
-1

我想使用VBA函数将数组打印到电子表格。 (类似LINEST返回数组的方式)。然而,我的函数似乎不喜欢被分配给一个数组,然后不会打印它。如何将数组返回给Excel电子表格?

这里有点代码:

Public Function Volume(x As Double, xmax As Double, Flows As Range) As Double() 

dim Y4(9) As Double 

'A bunch of stuff which eventually fills Y4 

Volume = Y4 

End Function 

资源也欢迎,但我无法找到一个相当长的搜索后一个答案。

+1

数组公式必须使用Ctrl + Shift键可以输入+输入 – Slai

+1

而且不要忘记,你的阵列很可能被宣布为'0要9',所以(一)第一单元将接受'Y4(0)'的值和(b)你将需要在同一行中选择10列来接收所有返回的10个值。 – YowE3K

+0

你的方法** IS **返回一个数组。 (我只是用序列号填充数组)。 *一堆东西*或者你测试你的函数的方式都有问题。 –

回答

0

即使您只返回一列,Excel也需要一个二维数组(行,列)。所以此工程:

Public Function Volume(x As Double, xmax As Double, Flows As Range) As Double() 
    Dim lCt As Long 
    Dim Y4(1 To 10, 1 To 1) As Double 

    'A bunch of stuff which eventually fills Y4 
    For lCt = 1 To 10 
     Y4(lCt, 1) = Rnd() 
    Next 
    Volume = Y4 

End Function 
+3

你不需要一个2-D数组 - 但看到“定位数组”下的http://www.cpearson.com/excel/returningarraysfromvba.aspx –

+0

嗯,不是我发布的最佳答案我猜:-) – jkpieterse

+0

我经常不得不提醒自己这是如何工作的(这就是为什么我有这个链接,方便...)我有时使用二维数组,因为它显示,因为它更容易可视化它如何“适合”在返回范围。 –