一、VLOOKUP 模糊搜索
在 WPS 表格中,可以通过使用 VLOOKUP 函数和通配符来实现高级模糊搜索。这里有一个具体的示例来帮助你理解如何进行这些操作。
示例:实现 VLOOKUP 高级模糊搜索
假设我们有以下数据集:
| A | B | 
|---|---|
| 产品编号 | 产品名称 | 
| 001 | 苹果 | 
| 002 | 香蕉 | 
| 003 | 橙子 | 
| 004 | 葡萄 | 
我们的目标是使用模糊搜索来查找包含特定关键字的产品名称,并返回相应的产品编号。
步骤
-  准备数据: 
 在一个新的表格中输入上面的数据集。
-  使用 VLOOKUP 和通配符: 
 在你想要显示结果的单元格中使用以下公式:=VLOOKUP("*" & 搜索关键字 & "*", A:B, 2, FALSE)这里的 搜索关键字是你要查找的字符串,可以在某个单元格中定义。例如,如果你的搜索关键字在 C1 单元格中,那么公式应该写成:=VLOOKUP("*" & C1 & "*", A:B, 2, FALSE)
-  示例: 
 假设在 C1 中输入 “苹果”,那么在 D1 单元格中输入以下公式:=VLOOKUP("*" & C1 & "*", A:B, 2, FALSE)这个公式会查找包含 “苹果” 的产品名称,并返回对应的产品编号。如果存在多个匹配项, VLOOKUP只会返回第一个匹配项。
进一步说明
-  通配符使用: - *代表任意数量的字符。例如,- "*苹果*"会匹配任何包含 “苹果” 的字符串。
- ?代表任意单个字符。例如,- "苹果?"会匹配 “苹果1”、“苹果a” 等字符串。
 
-  数据范围: 
 确保VLOOKUP函数中的数据范围正确,并且范围中的第一列是要查找的列。
完整示例
假设你的表格如下:
A      B
1 产品编号  产品名称
2 001      苹果
3 002      香蕉
4 003      橙子
5 004      葡萄
并且你在 C1 单元格中输入 “果”,在 D1 单元格中输入以下公式:
=VLOOKUP("*" & C1 & "*", B2:B5, 1, FALSE)
效果
这个公式会查找包含 “果” 的所有产品名称,并返回相应的产品编号。例如,对于输入 “果”,会匹配 “苹果”、“香蕉”、“橙子” 和 “葡萄”,并返回相应的产品编号。
二、VLOOKUP 多样通配符组合实现更多样的匹配
好的,我们可以探索更多样的通配符组合以及它们的应用,以实现更加复杂和灵活的模糊搜索。以下是几种常见的通配符组合及其使用示例:
通配符组合
- 单个字符匹配 (?)
- 任意字符匹配 (*)
- 组合使用 ?和*
示例数据集
假设我们有以下数据集:
| A | B | 
|---|---|
| 产品编号 | 产品名称 | 
| 001 | 苹果 | 
| 002 | 香蕉 | 
| 003 | 橙子 | 
| 004 | 葡萄 | 
| 005 | 苹果汁 | 
| 006 | 香蕉奶昔 | 
| 007 | 草莓 | 
| 008 | 蓝莓 | 
| 009 | 西瓜 | 
| 010 | 甜瓜 | 
使用单个字符匹配 (?)
 
? 代表任意单个字符。例如,我们要查找产品名称中第三个字符是 “果” 的产品。
在 C1 单元格中输入搜索模式 ??果,然后在 D1 单元格中输入以下公式:
=VLOOKUP(C1, B2:B11, 1, FALSE)
在这种情况下,VLOOKUP 会查找所有名称中第三个字符是“果”的产品。
使用任意字符匹配 (*)
 
* 代表任意数量的字符。例如,我们要查找所有包含“果”的产品。
在 C1 单元格中输入搜索模式 *果*,然后在 D1 单元格中输入以下公式:
=VLOOKUP(C1, B2:B11, 1, FALSE)
这个公式会查找所有包含“果”的产品名称。
组合使用 ? 和 *
 
可以组合使用 ? 和 * 以实现更加复杂的模式匹配。例如,我们要查找以“苹”开头且包含“汁”的产品。
在 C1 单元格中输入搜索模式 苹*汁,然后在 D1 单元格中输入以下公式:
=VLOOKUP(C1, B2:B11, 1, FALSE)
这个公式会查找以“苹”开头且包含“汁”的产品名称。
更复杂的示例
假设我们要查找所有以“苹”开头并且第三个字符是“汁”的产品。
在 C1 单元格中输入搜索模式 苹?汁*,然后在 D1 单元格中输入以下公式:
=VLOOKUP(C1, B2:B11, 1, FALSE)
结合返回产品编号和名称
在进行通配符模糊搜索时,我们通常还希望返回对应的产品编号和名称。可以在 D1 和 E1 单元格中分别输入两个 VLOOKUP 公式:
-  在 C1 单元格中输入搜索关键字: 
 输入*果*。
-  在 D1 单元格中输入查找产品编号的公式: =VLOOKUP("*" & C1 & "*", A2:B11, 1, FALSE)
-  在 E1 单元格中输入查找产品名称的公式: =VLOOKUP("*" & C1 & "*", A2:B11, 2, FALSE)
这样我们可以同时在 D1 和 E1 单元格中返回包含“果”的产品的编号和名称。
高级应用:处理多个匹配项
为了处理多个匹配项,可以结合 IFERROR、SMALL 和数组公式来实现。假设我们希望返回所有包含关键字的产品编号和名称。
在 C1 单元格中输入搜索关键字 *果*,然后在 D2 单元格中输入以下公式:
-  查找产品编号: =IFERROR(INDEX(A2:A11, SMALL(IF(ISNUMBER(SEARCH(C1, B2:B11)), ROW(B2:B11)-ROW(B2)+1), ROW(1:1))), "")
-  查找产品名称: =IFERROR(INDEX(B2:B11, SMALL(IF(ISNUMBER(SEARCH(C1, B2:B11)), ROW(B2:B11)-ROW(B2)+1), ROW(1:1))), "")
然后按 Ctrl + Shift + Enter 将其作为数组公式输入,并向下复制以找到其他匹配项。
三、高级优化和增强模糊搜索功能
好的,我们可以进一步优化和增强模糊搜索功能,以处理更复杂的搜索需求,例如区分大小写、限定特定范围等。此外,我们可以使用其他函数,如 FILTER 和 SORT,来增强数据筛选和排序功能。
高级优化和增强模糊搜索功能
1. 区分大小写的模糊搜索
默认情况下,SEARCH 函数不区分大小写。如果我们需要区分大小写,可以使用 FIND 函数替代 SEARCH。
示例公式:
=INDEX(A:A, MATCH(TRUE, ISNUMBER(FIND(C1, B:B)), 0))
使用 FIND 函数代替 SEARCH 函数,可以实现区分大小写的模糊搜索。
2. 限定特定范围的搜索
如果我们只想在特定范围内进行搜索,可以将范围限定在公式中。
示例:
 假设我们只想在 B2:B6 范围内进行搜索,可以使用以下公式:
=INDEX(A2:A6, MATCH(TRUE, ISNUMBER(SEARCH(C1, B2:B6)), 0))
3. 使用 FILTER 函数进行高级筛选
 
如果需要返回所有匹配结果而不仅仅是第一个匹配项,可以使用 FILTER 函数来实现。
示例:
 假设我们的数据集如下:
| A | B | 
|---|---|
| 产品编号 | 产品名称 | 
| 001 | 苹果 | 
| 002 | 香蕉 | 
| 003 | 橙子 | 
| 004 | 葡萄 | 
| 005 | 苹果汁 | 
| 006 | 香蕉奶昔 | 
我们想查找所有包含关键字的产品,可以使用以下公式:
=FILTER(A2:B7, ISNUMBER(SEARCH(C1, B2:B7)))
这个公式将返回所有包含关键字的产品及其编号。
4. 使用 SORT 函数进行排序
 
为了对搜索结果进行排序,可以将 FILTER 函数的结果传递给 SORT 函数。
示例:
 将上一步的结果按产品编号排序,可以使用以下公式:
=SORT(FILTER(A2:B7, ISNUMBER(SEARCH(C1, B2:B7))), 1, TRUE)
总结和示例
假设你的工作表如下所示:
| A | B | 
|---|---|
| 产品编号 | 产品名称 | 
| 001 | 苹果 | 
| 002 | 香蕉 | 
| 003 | 橙子 | 
| 004 | 葡萄 | 
| 005 | 苹果汁 | 
| 006 | 香蕉奶昔 | 
并且你在 C1 单元格中输入了搜索关键字 “苹果”。
区分大小写的模糊搜索:
=INDEX(A:A, MATCH(TRUE, ISNUMBER(FIND(C1, B:B)), 0))
限定特定范围的搜索:
=INDEX(A2:A6, MATCH(TRUE, ISNUMBER(SEARCH(C1, B2:B6)), 0))
使用 FILTER 函数返回所有匹配结果:
 
=FILTER(A2:B7, ISNUMBER(SEARCH(C1, B2:B7)))
使用 SORT 函数对搜索结果进行排序:
 
=SORT(FILTER(A2:B7, ISNUMBER(SEARCH(C1, B2:B7))), 1, TRUE)