自动过滤 从数组中隐藏不包含单词的单元格行。

问题描述 投票:1回答:1

我的Excel工作簿里有2张表:表1: MUFG客户表2:公司信息。

因此,基本上我想在MUFG客户表的 "关键词 "字段(字段29)从公司信息表的另一个单元格(I18)中进行自动过滤。而单元格的内容是由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。

可以这样做吗?我想我必须直接讨论这个问题才能让你们明白。如果让大家产生误解,很抱歉。

非常感谢您...

excel vba cell criteria autofilter
1个回答
0
投票

如果你想让这个自动运行在Cells(18, 6)上(BTW是F18而不是I18.下面改成I18)的变化,然后使用计算事件。

如果单元格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
© www.soinside.com 2019 - 2024. All rights reserved.