Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2021|回复: 5

[已解决]关于筛选,如果筛选特定条件的结果没有时报错

[复制链接]
发表于 2015-3-5 22:19 | 显示全部楼层 |阅读模式
如下代码,要找出区域内出现5次的值,并逐一显示在F列中,当有结果时显示出了正确的结果

但是如果没有结果的话,就报错了

请问该如何修改一下代码 当没有符合条件的结果时 就显示 无 或者 空值呢?谢谢!



Sub scan()
    Dim d, k, t, arr, cel, r&, arr1()
    Set d = CreateObject("Scripting.Dictionary")
    arr = [n1:bo10000]
    For Each cel In arr
        If cel <> "" Then
            d(cel) = d(cel) + 1
        End If
    Next
   k = d.Keys
t = d.items
ReDim arr1(1 To UBound(k) + 1, 1 To 1)
For i = 0 To UBound(k)
    If t(i) >= 5 Then
        r = r + 1
        arr1(r, 1) = k(i)
    End If
Next
[f1].Resize(r) = arr1
End Sub

最佳答案
2015-3-6 05:07
  1. Sub scan()
  2. Dim d, arr, cel, r&, arr1()
  3. Set d = CreateObject("Scripting.Dictionary")
  4. [f:f] = ""
  5. arr = [n1:bo10000]
  6. ReDim arr1(1 To 60000, 1 To 1)
  7. For Each cel In arr
  8.     If cel <> "" Then
  9.         d(cel) = d(cel) + 1
  10.         If d(cel) = 5 Then
  11.             r = r + 1
  12.             arr1(r, 1) = cel
  13.             If r > UBound(arr1) - 1 Then Exit For
  14.         End If
  15.     End If
  16. Next
  17. If r < 1 Then
  18.     Exit Sub
  19. ElseIf r = 1 Then [f1] = arr1(1, 1)
  20. Else
  21.     [f1].Resize(r) = arr1
  22. End If
  23. End Sub
复制代码
 楼主| 发表于 2015-3-5 22:20 | 显示全部楼层
今天学雷锋活动日哈哈
坛子里肯定还有好多雷锋 没休息
回复

使用道具 举报

 楼主| 发表于 2015-3-5 22:30 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2015-3-5 22:40 | 显示全部楼层
再等等,希望有高手出手!
回复

使用道具 举报

 楼主| 发表于 2015-3-5 23:10 | 显示全部楼层
Next
If r > 0 Then [f1].Resize(r) = arr1 Else [f1] = ""
End Sub
回复

使用道具 举报

发表于 2015-3-6 05:07 | 显示全部楼层    本楼为最佳答案   
  1. Sub scan()
  2. Dim d, arr, cel, r&, arr1()
  3. Set d = CreateObject("Scripting.Dictionary")
  4. [f:f] = ""
  5. arr = [n1:bo10000]
  6. ReDim arr1(1 To 60000, 1 To 1)
  7. For Each cel In arr
  8.     If cel <> "" Then
  9.         d(cel) = d(cel) + 1
  10.         If d(cel) = 5 Then
  11.             r = r + 1
  12.             arr1(r, 1) = cel
  13.             If r > UBound(arr1) - 1 Then Exit For
  14.         End If
  15.     End If
  16. Next
  17. If r < 1 Then
  18.     Exit Sub
  19. ElseIf r = 1 Then [f1] = arr1(1, 1)
  20. Else
  21.     [f1].Resize(r) = arr1
  22. End If
  23. End Sub
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 17:57 , Processed in 0.159910 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表