我正在寻找在我的VBA宏中实现以下功能的方法。我有一个大小(xx,yy)的2D数组,我想动态填充。问题是返回值的函数返回1D数组。反转大小(yy,1)而不是(1,yy)。有没有办法使用函数返回的数组动态分配下一行。实现该功能的伪代码如下:
Dim X() As Double
ReDim X(1 to xx, 1 to yy)
Dim i As Long
For i=1 To xx
X(i,)= FunctionReturningArrayOfSize(1 to yy, 1 to 1)
Next i
编辑:只是为了弄清楚 - 我的结果数组X的每一行都是由执行FunctionReturningArrayOfSize(在for循环中)返回的。
答案 0 :(得分:1)
您正在使用Excel,因此您可以使用VBA中的Transpose
功能。
Transpose会自动将1D数组转换为2D数组。
Sub Test()
Dim a1D() As Variant
'Assign a 1D array
a1D = Array(1, 2, 3, 4, 5, 6)
Dim a2D As Variant
'Transpose to a 2D array
a2D = Application.WorksheetFunction.Transpose(a1D)
End Sub
答案 1 :(得分:1)
您可以将1D数组分配给2D Range
,但不能分配给另一个数组。
Dim X() ' has to be Variant array
With Range("A1").Resize(xx, yy)
.Value2 = FunctionReturningArrayOfSize(1 to yy, 1 to 1)
X = .Value2 ' or X = WorksheetFunction.Transpose(.Value2) to rotate it
End With