繁体   English   中英

VBA使用Excel中的多个条件过滤逗号分隔的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM