2017-07-03 44 views
1

我正在使用countif函數來擴展範圍和自動填充來獲得運行總數,並且想知道是否有更好的方法去實現它。Excel VBA:有沒有更快的方式來執行運行總計?

COUNTIF($ A $ 2:A2,A2)+自動填充下來

似乎沒有什麼問題,如果有隻有幾千行,但是當它到達10K +排它會減慢相當。

我在網上搜索了一些線索,但所有「更快」的方式都與TOTAL計數有關,而不是RUNNING計數。

謝謝你的幫助!

+0

數據透視表可能嗎? –

+0

嗨Nathan,我在數據透視表上看到了一些東西,但它們只是用於總計數,而不是用於總計。我需要的信息是哪一個是第一個實例,哪個是第二個實例等等。 有沒有一種方法可以使用數據透視表執行此操作?你能提供更多的細節嗎? –

回答

0

對於大數據,您可以使用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 
+0

@EricJang你試過這個,還是你最終得到了更好的? –

相關問題