我的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。
是否可以这样做?我想我必须直接讨论这个问题,以使你们理解。抱歉,这会引起误会。
非常感谢您...
答案 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