Excel VBA:有更快的方法来执行总计吗?

时间:2017-07-03 18:22:50

标签: excel vba excel-vba countif running-total

我正在使用具有扩展范围和自动填充的countif功能来获得运行总计,并且想知道是否有更好的方法来实现它。

COUNTIF($ A $ 2:A2,A2)+自动填充

如果只有几千行,似乎没有问题,但是当它达到10k +行时,它会大大减慢。

我在网上搜索了一些线索,但所有“更快”的方法都与TOTAL计数有关,而不是RUNNING计数。

感谢您的帮助!

1 个答案:

答案 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