Excel中VLOOKUP模糊匹配需用通配符:匹配任意长字符(如"销售")、?匹配单个字符(如"A?C??”),含*或?字面匹配须加~转义;更灵活方案可用INDEX-MATCH+SEARCH或FILTER函数实现。

如果您在Excel中使用VLOOKUP函数查找不完全匹配的文本,例如部分关键词、前缀或包含关系,则需借助通配符实现模糊匹配。以下是几种可靠且可直接应用的通配符组合方式:
本文运行环境:MacBook Air,macOS Sequoia。
一、使用星号(*)匹配任意长度字符
星号 * 可代表零个或多个任意字符,适用于查找以某字符串开头、结尾或包含某子串的记录。该方法要求VLOOKUP第三参数为TRUE或省略,并确保查找列已升序排列(若启用近似匹配);但配合通配符时,必须强制使用精确匹配模式(即第四参数设为FALSE),否则通配符无效。
1、在目标单元格输入公式:=VLOOKUP("销售*"&A2&"*",Sheet2!A:B,2,FALSE)。
2、将"销售*"替换为实际前缀,A2为待匹配关键词单元格。
3、确认公式后按Enter,结果将返回首个符合“销售+关键词+任意后续字符”模式的对应值。
4、如需匹配中间含关键词的条目,改用"*"&A2&"*"结构。
二、使用问号(?)匹配单个任意字符
问号 ? 仅替代一个位置上的任意单个字符,适用于固定长度且仅个别字符不确定的情形,例如统一编号中某位为变量数字或字母。此方式同样依赖精确匹配(第四参数为FALSE),且不改变原始数据排序要求。
1、编写公式:=VLOOKUP("A?C??",Sheet2!A:B,2,FALSE)。
2、其中"A?C??"表示首字符为A、第二位任意、第三位为C、第四第五位均任意的5位字符串。
3、若待查字段长度未知,不可单独使用?,须与*组合,如"A?C*"。
4、公式中所有?必须严格对应目标字符串的实际占位数,多一个或少一个均导致无匹配结果。
三、转义通配符本身进行字面匹配
当需查找真实包含*或?的文本(如产品编码含星号),必须对通配符加前导波浪号~进行转义,否则Excel会将其识别为通配功能而非普通字符。此操作确保VLOOKUP执行纯字符比对,不触发模糊逻辑。
1、输入公式:=VLOOKUP("ABC~*",Sheet2!A:B,2,FALSE)。
2、此处~*表示字面意义的星号,而非通配含义。
3、同理,查找问号应写作"ABC~?",查找波浪号则写作"ABC~~"。
4、若待查内容来自单元格B2,公式应写为:=VLOOKUP(SUBSTITUTE(SUBSTITUTE(B2,"*","~*"),"?", "~?"),Sheet2!A:B,2,FALSE)。
四、结合SEARCH与INDEX-MATCH替代VLOOKUP实现更灵活模糊匹配
VLOOKUP本身不支持正则或复杂模式匹配,但通过INDEX与MATCH嵌套SEARCH函数,可突破左侧查找限制并实现子串存在性判定。该方案无需排序,不依赖通配符语法,适配含空格、特殊符号的混合文本。
1、输入公式:=INDEX(Sheet2!B:B,MATCH(TRUE,ISNUMBER(SEARCH(A2,Sheet2!A:A)),0))。
2、按Ctrl+Shift+Enter(Windows)或Cmd+Shift+Enter(Mac)完成数组公式的录入。
3、A2为关键词,Sheet2!A:A为被搜索列,Sheet2!B:B为返回列。
4、SEARCH函数区分大小写,如需忽略大小写,可改用FIND函数并配合LOWER统一转换。
五、使用FILTER函数(Excel 365 / Excel 2021)批量返回所有匹配项
FILTER函数天然支持布尔数组筛选,配合ISNUMBER与SEARCH可一次性列出所有含指定关键词的行,彻底摆脱VLOOKUP单值返回限制。此方法无需辅助列,响应实时,且自动适应动态数组溢出行为。
1、输入公式:=FILTER(Sheet2!A:B,ISNUMBER(SEARCH(A2,Sheet2!A:A)),"未找到")。
2、A2为搜索关键词,Sheet2!A:B为源数据区域,第三参数为未匹配时显示内容。
3、若需限定仅返回列B,可写为:=FILTER(Sheet2!B:B,ISNUMBER(SEARCH(A2,Sheet2!A:A)))。
4、公式结果将自动向下扩展,显示所有符合条件的值,无需手动填充或按数组快捷键。










