Excel 自动筛选/隐藏不包含数组中单词的单元格行

Excel 自动筛选/隐藏不包含数组中单词的单元格行,excel,vba,cell,criteria,autofilter,Excel,Vba,Cell,Criteria,Autofilter,我的Excel工作簿中有两张工作表: 表1:MUFG客户机 表2:公司信息 所以基本上我想从公司信息表的另一个单元格(I18)的“关键字”字段(字段29)中对MUFG客户表进行自动筛选。细胞的含量是vlookup公式的结果,所以它会改变,并不总是一样的。下面是我的vba代码: Sub filter_by_cell_value () Sheets("MUFG Client").Range("A2").Autofilter Field:=29, _ Criteria1:="=Aste

我的Excel工作簿中有两张工作表: 表1:MUFG客户机 表2:公司信息

所以基本上我想从公司信息表的另一个单元格(I18)的“关键字”字段(字段29)中对MUFG客户表进行自动筛选。细胞的含量是vlookup公式的结果,所以它会改变,并不总是一样的。下面是我的vba代码:

Sub filter_by_cell_value ()
    Sheets("MUFG Client").Range("A2").Autofilter Field:=29, _
    Criteria1:="=Asterixsymbol" & Sheets("Company Information").Cells(18,6).Value & "*", xlOperator:= xlOr
End Sub
我的目标是希望自动过滤器能够读取单元格I18中的文本,而无需特定的文本/标准

例如,如果单元格I18包含Cosmetics,Chemical-->我希望autofilter in关键字字段可以显示单词Cosmetics或Chemical,则

如果我将公司信息表的内容更改为不同的公司(vlookup的结果),公司信息中的单元格I18将更改为食品饮料、业务扩展、快速消费品-->并且我还希望关键字字段(MUFG客户表)中的自动过滤器显示食品饮料或业务扩展或快速消费品(自动筛选通过忽略顺序包含这些单词)

根据我上面的vba代码,单元(18,6)是公司信息表中的单元I18

有可能吗?我想我必须直接讨论这件事,让你们明白。如果这造成误解,我很抱歉


非常感谢您……

如果您想在单元格(18,6)上自动运行此功能(顺便说一句,它是F18而不是I18。请在下面更改它以进行I18)更改,然后使用Calculate event

如果电池I18包含“化妆品,化学品”,则过滤器应为“化妆品”或“化学品”?尝试以下操作

Sub filter_by_cell_value()

arr = Split(Sheets("Company Information").Cells(18, 9).Value, ",")

Sheets("MUFG Client").Range("A2").AutoFilter Field:=29, Criteria1:=arr, Operator:=xlFilterValues

End Sub
编辑根据下面的注释,我们可以使用以下步骤隐藏行

Sub hide_Rows_by_cell_value()
Dim wb As Workbook, CompInfo As Worksheet, MufgClient As Worksheet
Dim srcCl As Range, lr As Long, FltCol As Range, cl As Range, hideRng As Range
Set wb = ThisWorkbook
Set CompInfo = wb.Sheets("Company Information")
Set MufgClient = wb.Sheets("MUFG Client")

Set srcCl = CompInfo.Cells(18, 9)
arr = Split(srcCl.Value, ",")

lr = MufgClient.Range("AC" & MufgClient.Rows.Count).End(xlUp).Row
Set FltCol = MufgClient.Range("AC3:AC" & lr) '2nd Row contains table headers

For Each cl In FltCol
    chk = 0
    For i = 0 To UBound(arr)
    chk = chk + InStr(1, cl.Value, Trim(arr(i)), vbTextCompare)
    Next
    If chk = 0 Then
        If hideRng Is Nothing Then
        Set hideRng = cl
        Else
        Set hideRng = Union(hideRng, cl)
        End If
    End If
Next

hideRng.EntireRow.Hidden = True

End Sub

您好,欢迎来到SO。什么是Asterixsymbol?…因此,如果单元格I18包含“化妆品,化学品”,则过滤器应为“Asterixsymbol化妆品”或“Asterixsymbol化学品”?@NareshBhople Asterixsymbol的意思是*。它没有显示,所以我手动键入。非常感谢您的回复和更正。我非常感谢。如果关键字字段仅包含化妆品或化学品,它确实有效。我不仅要过滤单元格I18中的第一个单词,还要过滤后面的多个单词。如果单元格I18为“化妆品,化学品”,autofilter还可以检查单元格是否包含“化妆品、家具”,然后是“业务拓展、化妆品、家具”,然后是“食品和饮料、化学品、属性”,忽略顺序(从最精确到最不精确)。类似于“包含”一次对两个值有效的筛选条件。因此,如果有两个以上的值,则无法使用筛选器…但是,是的,可以通过一个过程隐藏不包含这些词的其他行谢谢您的回复和更正。我非常感谢。如果关键字字段包含化妆品或仅限化学品。我的目标是不仅要过滤单元格I18中的第一个单词,还要过滤后面的多个单词。如果另一张表格I18中的单元格包含“化妆品,化学品”,自动过滤器还可以检查单元格中是否包含“化妆品,家具”等单词,然后是“业务拓展,化妆品,家具”忽略顺序(从最精确到最不精确)。是否可能?您知道VBA代码来隐藏其他不包含这些单词的行吗?也许您可以将其从上面我以前的VBA代码更改为:)选中已编辑的答案。如果这回答了问题,请在答案左侧打勾/upvote。OHMYGOSH它正在工作。非常感谢您的帮助。我将接受答案并更改标题。没有您我无法完成此操作:)