为 Excel 表中的列实现类似"标签"的过滤器?



我在excel表格中有一列,它可能包含如下值:

5
  • 7 1 8
  • 3、5

我想实现一个可以过滤这些值的宏,这样,如果我过滤&;5&;,就会出现第一和第三个结果。此外,我在列表中包含了ALL,因为将来可能会添加文本标签。以下是我到目前为止所做的,但它得到的结果不一致:

Sub ContainsFilter()
Dim strName As String
strName = InputBox("What would you like to search for?")
If strName = "" Then
ActiveSheet.ShowAllData
Else
ActiveSheet.ListObjects("Table").Range.AutoFilter Field:=7, Criteria1:="=*" & strName & "*", Operator:=xlAnd
End If
End Sub

下面应该可以工作:

Option Explicit
Public Sub ContainsFilter()
Dim InputReturn As Variant
InputReturn = Application.InputBox(Prompt:="What would you like to search for?", Title:="Filter Field 7", Type:=2) ' type 2 = string

If VarType(InputReturn) = vbBoolean And InputReturn = False Then
' User pressed cancel button or X in the right corner
Exit Sub
End If

If InputReturn = vbNullString Then
ActiveSheet.ShowAllData
Else
ActiveSheet.ListObjects("Table").Range.AutoFilter Field:=7, Criteria1:=Array("*" & InputReturn & "*", InputReturn), Operator:=xlFilterValues
End If
End Sub

最新更新