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

时间:2020-06-11 02:17:29

标签: excel vba cell criteria autofilter

我的Excel工作簿中有2张纸: 表格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->我希望“关键字字段”中的自动过滤器可以显示单词Cosmetics或Chemical,那么

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

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

是否可以这样做?我想我必须直接讨论这个问题,以使你们理解。抱歉,这会引起误会。

非常感谢您...

1 个答案:

答案 0 :(得分:0)

如果您希望它在Cells(18,6)上自动运行(顺便说一句,它是F18而不是I18。请在下面进行更改以进行I18)更改,然后使用Calculate事件。

如果单元格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