使用自动过滤器搜索数组中的任何字符串

时间:2019-10-29 13:41:08

标签: excel vba autofilter

我想过滤Excel中的特定列。所有单元格都包含以下字符串之一:MidpointEndpointMidpoint, Endpoint。我想保留所有包含字符串MidpointEndpoint的单元格(无论该单元格中还有其他什么字符串)。我正在使用通配符(*),并将以下数组定义为search_criteriaArray("*Midpoint*", "*Endpoint*")

但是,这种行为有点奇怪,我不理解。显然,仅显示单元格值为EndpointMidpoint, Endpoint的行,而不显示单元格值包含字符串MidpointEndpoint的行。

Sub Oval5_Click()
column = 13
search_criteria = Array("*Midpoint*", "*Endpoint*") ''OR
'search_criteria = "*Midpoint*, *Endpoint*" ''AND
Worksheets("Overview").Activate
StartRow = 10
EndRow = 110
StartColumn = "A"
EndColumn = "Y"
Let Filterrange = StartColumn & StartRow & ":" & EndColumn & EndRow
ActiveSheet.Range(Filterrange).AutoFilter Field:=column, Criteria1:=search_criteria ', VisibleDropDown:=False
End Sub

1 个答案:

答案 0 :(得分:2)

一些要考虑的事情:

  • 避免使用Activate,而应使用显式工作表引用。
  • 请参阅this文档,了解如何使用此函数的参数。

话虽如此,由于您所有的单元格都包含三个可能的字符串之一,因此也许可以执行以下操作:

ActiveSheet.Range(Filterrange).AutoFilter Field:=13, Criteria1:="<>*Midpoint, Endpoint*"