尋找關於如何優化此代碼以更快運行的想法。目前的代碼工作,但表格太大,性能速度很慢。VBA - 如何加快與日期循環?
總體邏輯:確定一個月中的天數。循環訪問表(wsUploadTable)並在滿足條件時增加值。在月中循環到第二天並重復。
例如:10/1/2016,通過表格循環查找日期匹配和增量值。接下來日期,比賽2016年10月2日循環表...直到月2016年10月31日,環表的最後一天,找到匹配和增值
'Determine DaysinMonth and assign DaysinMonth_Distro value
DaysInMonth = DateSerial(dtTrickle_Year, dtTrickle_Month + 1, 1) - _
DateSerial(dtTrickle_Year, dtTrickle_Month, 1)
DoM_Distro = 1/DaysInMonth
ReDim Days(1 To DaysInMonth)
For i = 1 To DaysInMonth
Days(i) = DateSerial(dtTrickle_Year, dtTrickle_Month, i)
'Loop Upload Table and increment cell value if condition is met
With wsUploadTable
lngER_PrimaryID = .Cells(1048576, 2).End(xlUp).Row
For intPrimaryID = 2 To lngER_PrimaryID
'store current cell value
dblLeadsValue = .Cells(intPrimaryID, col_Upload_Leads)
'match UploadTable row on user input and increment new value
If.Cells(intPrimaryID, 3).Value = Days(i) Then
.Cells(intPrimaryID, 11).Value = dblLeadsValue + (x * x * DoM_Distro)
End If
Next 'Next PrimaryID
End With
Next i
如果您的代碼按預期工作,但速度很慢,而且您希望加快速度並使其整體更清潔和更好,請了解[codereview.se]的確如此。 –
A日期是一個浮點數。你可以添加1來添加一天。這將避免使用'Days(i)= DateSerial(dtTrickle_Year,dtTrickle_Month,i)'。這樣可以節省一個看起來需要很多處理的函數調用。所以創建一個變量'd'。在你的循環中'd = d + 1'。 –