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


发表评论