1
我正在使用countif函數來擴展範圍和自動填充來獲得運行總數,並且想知道是否有更好的方法去實現它。Excel VBA:有沒有更快的方式來執行運行總計?
COUNTIF($ A $ 2:A2,A2)+自動填充下來
似乎沒有什麼問題,如果有隻有幾千行,但是當它到達10K +排它會減慢相當。
我在網上搜索了一些線索,但所有「更快」的方式都與TOTAL計數有關,而不是RUNNING計數。
謝謝你的幫助!
我正在使用countif函數來擴展範圍和自動填充來獲得運行總數,並且想知道是否有更好的方法去實現它。Excel VBA:有沒有更快的方式來執行運行總計?
COUNTIF($ A $ 2:A2,A2)+自動填充下來
似乎沒有什麼問題,如果有隻有幾千行,但是當它到達10K +排它會減慢相當。
我在網上搜索了一些線索,但所有「更快」的方式都與TOTAL計數有關,而不是RUNNING計數。
謝謝你的幫助!
對於大數據,您可以使用Dictionary
,因爲它使用高效的搜索算法(二進制搜索)。在大型數據集上,這應該會引起顯着的差異。
Sub RunningCounts()
Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
Dim r As Range: Set r = Sheet1.Range("A2", Sheet1.Cells(Sheet1.Rows.count, "A").End(xlUp))
Dim values: values = r.Value2
Dim i As Long
For i = LBound(values, 1) To UBound(values, 1)
dict(values(i, 1)) = dict(values(i, 1)) + 1
values(i, 1) = dict(values(i, 1))
Next
r.Offset(, 1).value = values ' <-- writes results on next column. change as needed
End Sub
@EricJang你試過這個,還是你最終得到了更好的? –
數據透視表可能嗎? –
嗨Nathan,我在數據透視表上看到了一些東西,但它們只是用於總計數,而不是用於總計。我需要的信息是哪一個是第一個實例,哪個是第二個實例等等。 有沒有一種方法可以使用數據透視表執行此操作?你能提供更多的細節嗎? –