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 单元格 D1 到 E2;然后单击公式栏;然后输入:
=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: 不知道如何连接二维数组
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 单元格 D1 到 E2;然后单击公式栏;然后输入:
=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: 不知道如何连接二维数组