excel vba函数返回数组并粘贴到工作表公式中

是否有可能为vba函数返回数组值并粘贴在Excel表中与Excel公式?

例如,我想在excel单元格中写一个公式A1 =GetData()并按回车。 它返回4个指标,填入A1:A4,B1:B4单元格。

我尝试了Variant和Collection作为返回types。 值在那里,但它只填充第一个单元格。

 Function GetData(Input1 As Range) As Variant Dim value() As Variant value(1, 1) = "somevalue" value(1, 2) = "somevalue" ............ value(2, 2) = "somevalue" GetData = value End Function 

有了这个代码:

 Function GetData() As Variant Dim value(1 To 2, 1 To 2) As Variant value(1, 1) = "1;1" value(1, 2) = "1;2" value(2, 1) = "2;1" value(2, 2) = "somevalue" GetData = value End Function 

select单元格D1E2 ; 然后点击公式栏; 然后input:

 =getdata() 

作为一个数组公式:

在这里输入图像说明

数组公式必须使用Ctrl + Shift + Enterinput,而不仅仅是Enter键。 如果这样做是正确的,公式栏中的公式将在其周围显示大括号。

编辑#1:

正如Jeeped指出的那样,一旦公式以这种方式被input,数组中的单个单元格就不能自行更改。 所以:

 Range("D1").Clear 

将失败。 您将需要:

 Sub poiuyt() Dim r As Range, r2 As Range Set r = Range("D1") Set r2 = r.CurrentArray r2.Clear End Sub