我的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。
可以这样做吗?我想我必须直接讨论这个问题才能让你们明白。如果让大家产生误解,很抱歉。
非常感谢您...
如果你想让这个自动运行在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