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,我在数据透视表上看到了一些东西,但它们只是用于总计数,而不是用于总计。我需要的信息是哪一个是第一个实例,哪个是第二个实例等等。 有没有一种方法可以使用数据透视表执行此操作?你能提供更多的细节吗? –