countif函数可以统计单元额区域中指定数据的出现次数,是一个常用的excel函数。
在数据量较少时,这个函数的统计可以很轻松的完成。
但是当遇到十万行级别的数据时,再利用countif函数进行技术统计会导致excel陷入死机或卡机状态,函数的计算非常缓慢。
为了提高在一列单元格区域(数据量非常大)中统计指定数据出现的次数,可以使用字典对象进行统计,以下是一个通用的计数统计示例vba代码:
Sub QQ1722187970() Excel.Application.ScreenUpdating = False Excel.Application.DisplayAlerts = False Excel.Application.Calculation = xlCalculationManual Dim oDic As Object '创建字典对象 Set oDic = CreateObject("Scripting.Dictionary") Dim oWK As Worksheet '指定统计哪个工作表 Set oWK = Sheet1 With oWK For i = 2 To .Range("B1048576").End(xlUp).Row '获取要计数的单元格的内容 sText = .Cells(i, "b").Value If Len(sText) Then With oDic '如果存在就计数+1 If .exists(sText) Then .Item(sText) = Val(.Item(sText)) + 1 Else '不存在就计数为1 oDic.Add sText, 1 End If End With End If Next i For i = 2 To .Range("B1048576").End(xlUp).Row sText = .Cells(i, "b").Value If Len(sText) Then '将统计的结果输出到指定的列 .Cells(i, "C") = oDic.Item(sText) End If Next i End With Excel.Application.Calculation = xlCalculationAutomatic Excel.Application.DisplayAlerts = True Excel.Application.ScreenUpdating = True End Sub
发表评论