首页 > 解决方案 > 将通配符添加到过滤器

问题描述

我目前有 7 个搜索字段 (A1:G2),用户可以输入字符来过滤其下方的数据集 (A4:P16013)。

我想调整代码以在输入到搜索字段的每个短语之前和之后添加一个通配符 (*)。

例如,如果用户输入“Toronto”,我想在代码中搜索“* Toronto *”(不带空格)。

这个问题与提供的链接不同,因为我希望通配符不限于某些短语,而是对用户可能输入的任何短语灵活

我该如何调整下面的代码来做到这一点?

Sub SearchAStore()
  Dim sh As Worksheet, lastRow As Long
  Set sh = ActiveSheet ' use here your sheet
  lastRow = sh.Range("A" & Rows.Count).End(xlUp).Row
    sh.Range("A4:O" & lastRow).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=sh.Range("A1:G2")
End Sub

标签: excelvba

解决方案


将通配符添加到条件范围,过滤,然后删除通配符。

例如:

Dim sh As Worksheet, rngCrit As Range, c As Range
Set sh = ActiveSheet

Set rngCrit = sh.Range("B2:F3")
For Each c In rngCrit.Rows(2).Cells
    If Len(c.Value) > 0 Then c.Value = "*" & c.Value & "*"
Next c

sh.Range("B5:F18").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=rngCrit

For Each c In rngCrit.Rows(2).Cells
    If Len(c.Value) > 0 Then c.Value = Mid(c.Value, 2, Len(c.Value) - 2)
Next c

推荐阅读