[英]VBA to filter comma separated values using multiple criteria in Excel
我是VBA的新手,非常感谢您的帮助。
我想使用多个条件过滤包含逗号分隔值的列。 目前,如果我在一个单元格中放置多个单词,我的过滤选项/条件就是单元格中的所有单词,而不是作为离散的单词/条件出现。
示例:我记录了每个家庭在一个村庄里养的宠物。 我希望过滤器显示“ dog”和/或“ cat”和/或“ horse”的单独标准,而不是“ dog”; 猫; 马”或“狗”; 猫” 。 如果我想知道哪个家庭有狗,并且我在excel中搜索了“狗” ,它只会向我显示不拥有任何其他宠物的家庭中的狗,因为拥有其他宠物的家庭将属于过滤器类别例如, 狗 猫” 。
我还希望选择以这种方式(使用多重条件)过滤多个列,以便我可以搜索村庄中的哪些宠物,每个孩子的爱好以及家庭中的哪些专业。 例如,我可能要在“宠物”列中搜索所有的猫和/或狗,在“儿童爱好”列B中搜索所有打篮球和/或下棋的孩子,在“职业”列C中搜索所有建筑师和/或厨师和/或新闻阅读器。 我希望我的电子表格仅显示符合所有这些条件的所有族(行)。
有谁知道我如何使用VBA实现这一目标?
非常感谢
假设我们从以下数据开始:
我们只希望看到带有猫或狗的行。由于我们使用的是VBA,因此我们可以“手动”过滤
Sub MultiFilter()
Dim N As Long, i As Long, v As String
N = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To N
v = Cells(i, "A").Value
If InStr(1, v, "dog") > 0 Or InStr(1, v, "cat") > 0 Then
Cells(i, "A").EntireRow.Hidden = False
Else
Cells(i, "A").EntireRow.Hidden = True
End If
Next
End Sub
结果是:
您也可以在没有VBA的情况下执行此操作,方法是将过滤器应用于标题,然后添加“包含”文本过滤器,例如“猫”。
不使用VBA的限制是使用“ AND / OR”条件在文本筛选器中仅可容纳2个条件。
可以在每一列上使用相同的逻辑。 希望这种非VBA替代方法有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.