2017-07-03 46 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你试过这个,还是你最终得到了更好的? –

相关问题