下面的代碼非常慢,我的電腦需要一些時間才能完成操作。我試圖從author_metadata
使用更少的線路,但是甚至40000線路太多。 用excel VBA有更快的選擇嗎?Excel vba在大數據工作表中執行緩慢
author_metadata = ThisWorkbook.Worksheets("author_metadata").Range("A1:P542995").Value
allprofs = ThisWorkbook.Worksheets("allprofs").Range("A1:H4005").Value
Top200 = ThisWorkbook.Worksheets("Top200").Range("A1:B200").Value
m = 1
For j = 1 To 200
For k = 1 To 4005
If allprofs(k, 4) = Top200(j, 1) Then
For i = 2 To UBound(author_metadata)
If author_metadata(i, 10) = Top200(j, 1) Then
If allprofs(k, 2) = author_metadata(i, 12) Then
'do some data assigning between arrays like the next line
Top200Full(m, 1) = author_metadata(i, 1)
m = m + 1
End If
End If
Next i
End If
Next k
Next j
ThisWorkbook.Worksheets("Top200full").Range("A2:Q75601").Value = Top200Full
End Sub
它掛在哪裏?最後一行?嘗試在基於數組粘貼的末尾定義範圍,也許 –
[代碼評論](http://codereview.stackexchange.com/)將能夠提供幫助。 –
你可以做的是添加一些進度指標,看看瓶頸在哪裏。我會先把它放在For循環的開頭,像'Debug.Print「j:」&j&「 - k:」&k'。然後看看這個更新有多快或多慢。 考慮修復:我看不到這麼快;看起來你在這裏有不可避免的複雜性。除了爲此編寫基於XLL或C++的COM加載項外) –