ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7386|回复: 6

[求助] 如何利用数组的FILTER函数将是否包含某字符作为判断条件

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-10-22 13:31 | 显示全部楼层 |阅读模式
本帖最后由 autumnalRain 于 2015-10-22 14:58 编辑

如下面代码中红色字体部分:
想设置这样的条件,如果数组ARR中不包括字符“D"则执行语句,应该怎么设置?因为FILTER返回值为数组,而非逻辑值,所以请老师们指导红色部分应该怎么改?
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub TEST()
ARR = Array("A", "V", "C")
If VBA.FLITER(ARR, "D", FALSE) Then
  MSGBOX "NO EXISTS"
End If
End Sub


TA的精华主题

TA的得分主题

发表于 2015-10-22 14:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub TEST()
    ARR = Array("A", "V", "C")
    s = Filter(ARR, "D")
    If UBound(s) < 0 Then
        MsgBox "NO EXISTS"
    End If
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-22 14:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zax010 发表于 2015-10-22 14:04
Sub TEST()
    ARR = Array("A", "V", "C")
    s = Filter(ARR, "D")

十分感谢!{:soso_e163:}{:soso_e163:}

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-22 14:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 autumnalRain 于 2015-10-23 14:30 编辑

数据1数据2差异1(正向比较)差异2(反向查找)
4 有货#8 有货#2 有货#6 有货#10 有货4 有货#8 有货#0 有货#2 有货#6 有货#10 有货 有货#0
你 一 个 兵 中你 是 一 个 兵
B3 中 冇 的A3 中 没 的 A3 没 B3 冇



如图所示数据,要求找出数据2与数据1对比,找出独有项目;要求2,反向对比


自定义函数
  1. Function GETDIFFERENT(源数据 As Range, 比较区域 As Range)
  2. Application.Volatile
  3. ARR = Split(源数据, " ")
  4. BRR = Split(比较区域, " ")
  5. For I = 0 To UBound(BRR)
  6.    S = VBA.Filter(ARR, BRR(I))
  7.    If UBound(S) < 0 Then
  8.        SR = SR & " " & BRR(I)
  9.       Else
  10.        GoTo LINE
  11.     End If
  12. LINE: Next
  13. GETDIFFERENT = SR
  14. End Function
复制代码




FILTER.rar

15.34 KB, 下载次数: 24

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-22 14:42 | 显示全部楼层
字典方法
  1. Function GetDiff(源数据 As Range, 比较区域 As Range) '说明: 可以反向查找
  2. Application.Volatile
  3. ARR = Split(源数据, " ")
  4. BRR = Split(比较区域, " ")
  5. Set D = CreateObject("scriptinG.dictionary")
  6. For I = 0 To UBound(ARR)
  7.     D.Add ARR(I), ""
  8. Next
  9. For J = 0 To UBound(BRR)
  10.   If D.Exists(BRR(J)) Then
  11.     GoTo LINE
  12.    Else
  13.     SR = SR & " " & BRR(J)
  14.   End If
  15. LINE: Next
  16. GetDiff = SR
  17. End Function
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-23 09:42 | 显示全部楼层

数组方法求不重复值

本帖最后由 autumnalRain 于 2015-10-23 09:55 编辑
  1. Sub test()
  2. On Error Resume Next ‘此句不可省略,否则会运行到第5行时报错“下标越界”
  3. Dim arr()
  4. S = Split(“SB,DT,t,t,y,ABx,t,a,bFR,c ,d,SB,f,g,h,I,x,y,t,c”, ",")
  5. For i = 0 To UBound(S)
  6.    If UBound(Filter(arr, S(i))) < 0 Then
  7.      N = N + 1
  8.      ReDim Preserve arr(1 To N)
  9.      arr(N) = S(i)
  10.      End If
  11. Next
  12. [B1].Resize(UBound(arr), 1) = Application.Transpose(arr)
  13. End Sub
复制代码

数组方法求不重复值.rar

13.79 KB, 下载次数: 13

TA的精华主题

TA的得分主题

发表于 2018-7-25 18:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zax010 发表于 2015-10-22 14:04
Sub TEST()
    ARR = Array("A", "V", "C")
    s = Filter(ARR, "D")

不错,学习了,留个记号。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-11 00:53 , Processed in 0.041010 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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