如何让VBA搜索不限制完全匹配,实现双向包含的模糊匹配
解决方法
你原有的代码是全等匹配逻辑,仅当searchField和searchValue两个值完全一致时才会触发后续操作,要实现双向包含的判断,修改为两个包含判断的或逻辑即可,不同开发语言的字符串包含判断函数略有区别,以下是常见场景的实现:
1. VB/VBA 场景(和你现有代码语法匹配)
VB中使用InStr函数判断字符串包含关系,返回值大于0即代表包含,修改后代码如下:
If (InStr(dataArray(i, searchField), searchValue) > 0) Or (InStr(searchValue, dataArray(i, searchField)) > 0) Then ' 执行操作X End If
如果需要忽略大小写判断,可以给InStr函数增加第四个参数vbTextCompare,示例:InStr(1, dataArray(i, searchField), searchValue, vbTextCompare)
2. 其他常用语言示例
- Python 写法:
if search_value in data_array[i][search_field] or data_array[i][search_field] in search_value: # 执行操作X
- JavaScript 写法:
if (dataArray[i][searchField].includes(searchValue) || searchValue.includes(dataArray[i][searchField])) { // 执行操作X }
- Java 写法:
if (dataArray[i][searchField].contains(searchValue) || searchValue.contains(dataArray[i][searchField])) { // 执行操作X }
内容的提问来源于stack exchange,提问作者Christy_kaye
相关产品推荐
相关产品推荐

