Arrays excel vba函数返回数组并粘贴到工作表公式中
vba函数是否可以返回数组值并使用excel公式粘贴到工作表中 例如,我想在excel单元格中编写一个公式,比如A1 like=GetData,然后按enter键。它返回4个度量,并填充A1:A4、B1:B4单元格 我尝试将Variant和Collection作为返回类型。值在那里,但它只填充第一个单元格Arrays excel vba函数返回数组并粘贴到工作表公式中,arrays,excel,vba,function,formula,Arrays,Excel,Vba,Function,Formula,vba函数是否可以返回数组值并使用excel公式粘贴到工作表中 例如,我想在excel单元格中编写一个公式,比如A1 like=GetData,然后按enter键。它返回4个度量,并填充A1:A4、B1:B4单元格 我尝试将Variant和Collection作为返回类型。值在那里,但它只填充第一个单元格 Function GetData(Input1 As Range) As Variant Dim value() As Variant value(1, 1) =
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
选择单元格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:Idk如何加入二维数组我认为如果返回数组,则必须选择多个单元格并按shift键enter键才能获得所有这些值。您可以使用索引来获取数组中的特定值,例如:=INDEXA1:A4,3读取以下内容:单元格2行乘2列的范围也会被“锁定”,因此必须对该范围内的所有单元格进行任何更改;您不能对单个单元格进行更改。@请参见我的编辑1我不知道函数返回的行数。列数是预定义的。如何设置行范围动态?@siz您将使用子对象而不是函数。sub可以自行决定其输出的位置。好的,如何从excel公式调用sub?