我有兩個excel文件。VBA Excel大數據處理永遠需要
第一個excel文件包含Person Name和Total Days Present列 Ex。
PersonName TotalDays
xyz
abcd
另一個excel文件包含人名,日期和狀態(存在/不存在)。
PersonName Date Status
xyz 1/1/2011 Present
xyz 1/1/2011 Present
我需要將相似的日期狀態分組爲一個,並計數它們以在第一個excel文件中更新。
我在第一個文件中有大約100行,其中第二個文件需要檢查20000行。所以爲了讓它更快,我將第二個文件中的所有行加載到數組中,並讀取它們以計算每個正確工作的條目。
問題是,它需要大量的內存,所以在Windows中這麼多應用程序會自動打開並且系統幾乎掛起。
是否有任何替代方案來實現這個沒有內存問題和快速處理。我遇到了Scripting.Dictionary,但不確定它是否會佔用較少的內存。
編輯 我嘗試使用redim保留和20,000個大小的靜態數組,在這兩種情況下都會發生同樣的問題。
EDIT
lblStatus.Caption = "Loading to memory"
Dim ArrAuditData() As AData
Dim TotalLookUpCount As Integer
For J = 1 To 50000
If lookUpRange.Cells(J, cmbChoice.ListIndex) = "Fail" Then
ReDim Preserve ArrAuditData(J) As AData
ArrAuditData(TotalLookUpCount).AuditType = lookUpRange.Cells(J, cmdAudit2.ListIndex)
ArrAuditData(TotalLookUpCount).TransTime = lookUpRange.Cells(J, cmbChoice.ListIndex - 1)
ArrAuditData(TotalLookUpCount).AuditValue = lookUpRange.Cells(J, cmbChoice.ListIndex)
ArrAuditData(TotalLookUpCount).Slno = lookUpRange.Cells(J, 0)
TotalLookUpCount = TotalLookUpCount + 1
ElseIf lookUpRange.Cells(J, cmbChoice.ListIndex) = "" And J > 4 Then Exit For
End If
DoEvents
Next
你可以在你認爲問題發生的地方粘貼一段代碼嗎?僅憑描述就很難弄清楚你所做的事情。 – jonsca 2011-05-26 05:43:36
另外,你有'Application.ScreenUpdating = False'?這應該可以爲您節省一些計算負擔。 – jonsca 2011-05-26 05:45:20
@jonsca:真的?屏幕上沒有任何內容正在改變。在這種情況下'.ScreenUpdating = False'仍然可以節省計算負擔嗎? – 2011-05-26 13:26:49