我正在使用具有扩展范围和自动填充的countif功能来获得运行总计,并且想知道是否有更好的方法来实现它。
COUNTIF($ A $ 2:A2,A2)+自动填充
如果只有几千行,似乎没有问题,但是当它达到10k +行时,它会大大减慢。
我在网上搜索了一些线索,但所有“更快”的方法都与TOTAL计数有关,而不是RUNNING计数。
感谢您的帮助!
答案 0 :(得分: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