【发布时间】:2022-01-13 23:08:42
【问题描述】:
我正在运行下面的代码从工作表中提取数据并将其吐出,它非常慢,有什么提高速度的想法吗?
这个循环本质上是从数组(从数据库)中提取数据
我已经完成了通常的关闭计算等操作,我正在寻找的是如何在不通过工作表单元格的情况下进行循环,因为我认为这需要很长时间。
谢谢!
代码如下:
Set RawDataD1WS = PnLWB.Worksheets("Raw_Data_D1")
Dim VarBunker As Variant
For i = LBound(VarBunker, 1) To UBound(VarBunker, 1)
For k = LBound(VarBunker, 1) To UBound(VarBunker, 2)
BunkerD1WS.Cells(k + 2, i + 1) = VarBunker(i, k)
Next k
Next i
【问题讨论】:
-
VarBunker是您使用GetRows()得到的数组吗? -
是的,这是获取行位:Set rs = New ADODB.Recordset strSQL = "SELECT [External BA],[Origin],[DeliveredQuantity Total] from [Bunker_Deliveries$]" rs .Open strSQL, cn If rs.EOF = False Then VarBunker = rs.GetRows End If rs.Close
-
GetRows 中的二维数组是“翻转的”(如您所知),因此将其写入工作表的快捷方式是使用函数将数组转置到内存中,然后将其放在工作表。