我试图在不使用任何循环的情况下将一维数组写入excel电子表格。基本上我试图加快我的代码速度,以便我可以将价格系列转换为回归系列。
我已将价格系列复制到一个变量中,然后执行转换以返回,但我似乎无法将整个数组写回excel。我似乎只能使用循环逐个进行。这基本上违背了试图避免多次读取/写入excel的目的。我的代码如下。
理想情况下,我试图在没有实际循环的情况下完成最后一个循环。
For j = 1 To num_sec
len_ror = wks_acp.Range("A:A").Offset(0,j).Cells.SpecialCells(xlCellTypeConstants).Count - 2
last_row = max_row - len_ror + 1
ReDim prices(len_ror + 1) As Variant
ReDim rors(len_ror - 1) As Variant
prices = wks_acp.Range("$a$" & last_row - 1 & ":" & "$a$" & max_row).Offset(0, j).Value
For i = 0 To len_ror - 1
On Error GoTo errhandler
rors(i) = (prices(i + 2, 1) / prices(i + 1, 1)) - 1
Next i
For i = 0 To len_ror - 1
wks_test.Range("$a$" & last_row + i).Offset(0, j) = rors(i)
Next i
答案 0 :(得分:2)
作为替代方案,您可以ReDim rors
作为二维数组并以这种方式使用它:
Sub demo()
Dim x As Long
x = 10
ReDim rors(1 To x, 1 To 1)
For i = 1 To 10
rors(i, 1) = i
Next i
Range("B9:B18") = rors
End Sub
答案 1 :(得分:1)
您可以将一维数组写入一行:
wks_test.Cells(1, 1).Resize(1, ubound(arr)+1).value = arr
或列:
wks_test.Cells(1, 1).Resize(ubound(arr)+1, 1).value = Application.Transpose(arr)
以上假设您的数组arr
从零开始。
注意:如果您的数组大小为>,则无法使用Application.Transpose
〜65K