excel - 将通配符添加到过滤器
问题描述
我目前有 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
解决方案
将通配符添加到条件范围,过滤,然后删除通配符。
例如:
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
推荐阅读
- php - PHP Soap 客户端不会在 Web 服务调用中发送所有对象属性
- highcharts - Highcharts 甘特图里程碑系列
- oracle - 表设计和效率
- c++ - C++ 中未解析的外部符号(使用 VS2017)
- html - 响应式 CSS 水平滚动
- sql - excel vba 运行 sql 命令从 CSV 文件中获取选定的数据
- r - 在条件内插入单元格值,以便与 R 中的循环一起使用
- ffmpeg - 如何使用 ffmpeg 复制流并保留格式和元数据?
- r - 将函数应用于 n 列并在 R 中的 n 个新列中获得结果。如何?
- http - 更换证书后出现 NET::ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN 错误