You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用VLOOKUP实现主表单元格包含查找表关键词的分类匹配?

如何用VLOOKUP实现主表单元格包含查找表关键词的分类匹配?

嗨,我懂你的困扰——平时用VLOOKUP加通配符都是用短查找值去匹配长表项,但这次要反过来,用查找表里的关键词去匹配主表的长交易内容,方向完全反了对吧?

你之前写的=VLOOKUP("*"&LookupCell&"*", LookupTable, 2, FALSE)确实搞反了逻辑:它是在查找表中找包含主表单元格内容的项,但你要的是查找表中的关键词被包含在主表单元格里,得换个思路来写。

给你两种可行的方案,都是基于数组公式的(旧版Excel需要按Ctrl+Shift+Enter确认,新版365/2021+直接回车就行):

方案一:VLOOKUP结合SEARCH实现

假设主表的交易内容在A2单元格,查找表的关键词列是$B$2:$B$10,分类列是$C$2:$C$10,公式可以这么写:

=VLOOKUP(TRUE, ISNUMBER(SEARCH($B$2:$B$10, A2))*$B$2:$C$10, 2, FALSE)

拆解下逻辑:

  • SEARCH($B$2:$B$10, A2)会逐个检查查找表的关键词是否在A2里,包含就返回位置数字,不包含返回错误值;
  • ISNUMBER(...)把数字转成TRUE,错误值转成FALSE;
  • 和查找表区域相乘后,只有匹配关键词的那一行会保留原数据,其他行变成错误值;
  • 最后VLOOKUP找TRUE,就能定位到对应的分类了。

方案二:INDEX+MATCH组合(逻辑更直观)

如果觉得VLOOKUP的写法有点绕,用INDEX+MATCH的组合理解起来更简单:

=INDEX($C$2:$C$10, MATCH(TRUE, ISNUMBER(SEARCH($B$2:$B$10, A2)), 0))

这个公式的逻辑是:先用MATCH找到第一个匹配关键词的行号,再用INDEX返回对应行的分类。

几个实用提醒:

  • 如果有多个关键词都能匹配主表的交易内容,公式会返回查找表中第一个出现的分类,记得把优先级高的关键词放在查找表前面;
  • SEARCH是不区分大小写的,如果需要严格区分大小写,把SEARCH换成FIND就行;
  • 一定要给查找表的区域加绝对引用(比如$B$2:$B$10),不然下拉公式的时候区域会跑偏。

备注:内容来源于stack exchange,提问作者Fly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 13:24:41