编写multidimensional array来优秀vba

我正在寻求写一个Excel电子表格的一维数组,而不使用任何循环。 本质上,我试图加快我的代码,以便我可以将价格系列转换为返回系列。

我已经将价格系列复制到一个variables,然后执行转换返回,但我似乎无法将整个数组写回到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 

谢谢!

贾森

您可以将一维数组写入一行:

 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是从零开始的。

注意 :如果数组大小>〜65k,则无法使用Application.Transpose

作为替代scheme,您可以将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 

在这里输入图像说明