具有大数据集VBA的For循环崩溃

时间:2015-01-18 10:15:39

标签: excel excel-vba vba

我正在尝试为每个数据点赋予一个indexvalue。它适用于小型数据集,但当我的数据集为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

你们有什么想法来解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

它已经解决了。工作得更快。

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

答案 1 :(得分:0)

您可以生成具有索引字段的2D变体数组(对于您的75000行样本):

X = Evaluate("=ROW(A1:A75000)")