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

excel vba function return array and paste in worksheet formula

vba 函数是否可以 return 数组值并使用 excel 公式粘贴到 sheet 中?

例如,我想在 excel 单元格中写一个公式,说 A1 就像 =GetData() 然后按回车键。它 returns 4 个指标 A1:A4,B1:B4 单元格已填充。

我尝试将 Variant 和 Collection 作为 return 类型。值在那里,但它只填充第一个单元格。

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;然后单击公式栏;然后输入:

=getdata()

作为数组公式:

数组公式必须用Ctrl + Shift + 输入Enter 而不仅仅是 Enter 键。如果操作正确,公式栏中的公式将以大括号括起。

编辑#1:

正如 Jeeped 指出的那样,一旦以这种方式将公式输入数组,数组中的单个单元格就无法自行更改。所以:

Range("D1").Clear

会失败。你需要:

Sub poiuyt()
    Dim r As Range, r2 As Range

    Set r = Range("D1")
    Set r2 = r.CurrentArray
    r2.Clear
End Sub

使用连接将数组转换为字符串,选中单元格属性>换行文本。然后你可以将数组填充到单个单元格。

Value(0) = "somedata"
value(1) = "somedata"
GetData = Join(value, Chr(10))

P/s: 不知道如何连接二维数组