|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
你的有一点不好 就是要是没有出现 你把原来条件就删除了
我给你修改了一下
Sub 包含筛选数据统计出现次数()
Dim arr
Set d = CreateObject("scripting.dictionary")
tim = Timer
Dim crr(1 To 55000, 1 To 6)
With Sheets("数据结果")
irow = .Cells(.Rows.Count, 10).End(xlUp).Row
arr = .Range("J2:J" & irow) '要查找的值列表区
If Not IsArray(arr) Then
ReDim arr(1 To 1, 1 To 1)
arr(1, 1) = .Range("J2:J" & irow)
End If
End With
With Sheets("数据源")
imax = .Cells(.Rows.Count, 1).End(xlUp).Row
brr = .Range("A2:F" & imax) '源数据
End With
For k = 1 To UBound(arr)
d(arr(k, 1) & "") = 0 '查找关键字进入字典
For n = 1 To UBound(brr)
If InStr(brr(n, 1), arr(k, 1)) > 0 Then 'brr(n, 1)在源数据第一列里去找
d(arr(k, 1)) = d(arr(k, 1)) + 1 '出现次数计数
m = m + 1 '结果行号
crr(m, 1) = brr(n, 1) '以下是需要返回的值
crr(m, 2) = brr(n, 2)
crr(m, 3) = brr(n, 3)
crr(m, 4) = brr(n, 4)
crr(m, 5) = brr(n, 5)
crr(m, 6) = brr(n, 6)
End If
Next
Next
Sheets("数据结果").Range("A2:F45000") = ""
Sheets("数据结果").Range("k2:K" & irow) = ""
Sheets("数据结果").Range("A2").Resize(m, 6) = crr
Sheets("数据结果").Range("K2").Resize(d.Count, 1) = Application.Transpose(d.items)
MsgBox "执行完毕!_用时: " & Format(Timer - tim, "0.00") & " 秒"
End Sub
这样就不会删除 结果统计为0 |
|