大数据集 VBA 的 For 循环崩溃
For-loop crashes with large data set VBA
我正在尝试为每个数据点指定一个索引值。它适用于小型数据集,但当我的数据集为 750,000 时程序崩溃。 Excel 给出以下错误消息:对象范围的方法值失败。
这是我的一些代码:
Set datatable = sDataImport.ListObjects("dataTable")
Dim lastRow As Single
'给导入的数据一个索引值
lastRow = sDataImport.ListObjects("dataTable").ListRows.Count
For i = 1 To lastRow
datatable.ListColumns("index").DataBodyRange(i, 1).value = i
Next i
你们有解决这个问题的想法吗?
解决了。工作起来也快得多。
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlManual
Dim arr As Variant
ReDim arr(1 To lastRow, 1 To 1) As Variant
For i = 1 To lastRow
arr(i, 1) = i
Next
datatable.ListColumns("index").DataBodyRange.value = arr
Application.ScreenUpdating = True
Application.EnableEvents = True
您可以像这样生成带有索引字段的二维变体数组(对于您的 75000 行示例):
X = Evaluate("=ROW(A1:A75000)")
我正在尝试为每个数据点指定一个索引值。它适用于小型数据集,但当我的数据集为 750,000 时程序崩溃。 Excel 给出以下错误消息:对象范围的方法值失败。
这是我的一些代码:
Set datatable = sDataImport.ListObjects("dataTable")
Dim lastRow As Single
'给导入的数据一个索引值
lastRow = sDataImport.ListObjects("dataTable").ListRows.Count
For i = 1 To lastRow
datatable.ListColumns("index").DataBodyRange(i, 1).value = i
Next i
你们有解决这个问题的想法吗?
解决了。工作起来也快得多。
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlManual
Dim arr As Variant
ReDim arr(1 To lastRow, 1 To 1) As Variant
For i = 1 To lastRow
arr(i, 1) = i
Next
datatable.ListColumns("index").DataBodyRange.value = arr
Application.ScreenUpdating = True
Application.EnableEvents = True
您可以像这样生成带有索引字段的二维变体数组(对于您的 75000 行示例):
X = Evaluate("=ROW(A1:A75000)")