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

时间:2015-01-07 15:48:07

标签: excel excel-vba vba

我是VBA的新手,真的很感激一些帮助。

我想使用多个条件过滤具有逗号分隔值的列。目前,如果我在一个单元格中放置多个单词,我的过滤选项/标准就是单元格中的所有单词,而不是单独的单词/标准。

示例:我记录了每个家庭在一个村庄里养的宠物。我希望过滤器显示' dog' 和/或' cat' 和/或&#的单独标准39;马' ,而不是'狗;猫;马' '狗;猫' 。如果我想知道哪些家庭有狗,我在excel中搜索了' ,它只会告诉我那些不拥有任何其他家庭的狗宠物,因为拥有其他宠物的家庭会属于过滤类别,例如' dog;猫'

我还希望以这种方式选择过滤多个列(使用多重标准),这样我就可以搜索村里的宠物,每个孩子的爱好以及家庭中的哪些职业。例如,我可能想要在宠物栏A中搜索所有猫和/或狗,在儿童爱好栏B中搜索所有打篮球和/或国际象棋的孩子,以及在所有建筑师的职业C栏中搜索/或厨师和/或新闻阅读器。我希望我的电子表格只显示符合所有这些条件的所有系列(行)。

有谁知道如何使用VBA实现这一目标?

非常感谢

2 个答案:

答案 0 :(得分:0)

假设我们从以下数据开始:

enter image description here

我们希望只看到包含 cat dog 的行。由于我们使用 VBA ,我们可以手动过滤" #34;

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

这导致:

enter image description here

答案 1 :(得分:0)

您也可以在没有VBA的情况下执行此操作,方法是在您的标题中应用过滤器,然后添加'包含'文字过滤器,例如' Cat'。

不使用VBA的限制是,文本过滤器中只有2个条件可以使用' AND / OR'标准。

可以在每列上使用相同的逻辑。希望这种非VBA替代方案有所帮助!