Excel中用TEXTJOIN配合INDEX MATCH提取唯一匹配值问题咨询
Excel 价格区间匹配公式解决方案
以下公式均默认你的匹配对照表(表B)结构为:首列存储水果关键词,次列存储对应价格标识,匹配范围为表B!$D$2:$D$4(关键词列)、表B!$E$2:$E$4(价格列),可根据你的实际表格范围调整参数。
问题1:单单元格(A5)去重合并价格区间
Excel 365/2021及以上版本(支持动态数组)
直接输入以下公式即可生效:
=TEXTJOIN(",",TRUE,UNIQUE(IF(ISNUMBER(SEARCH(表B!$D$2:$D$4,A5)),表B!$E$2:$E$4,"")))
- 逻辑说明:
SEARCH判断A5是否包含指定水果关键词,IF返回匹配到的价格标识,UNIQUE自动去重,TEXTJOIN忽略空值用逗号合并结果。
低版本Excel(无UNIQUE函数)
输入公式后按Ctrl+Shift+Enter确认数组公式生效:
=TEXTJOIN(",",TRUE,IF(ISNUMBER(SEARCH(表B!$D$2:$D$4,A5)),IF(MATCH(表B!$E$2:$E$4,表B!$E$2:$E$4,0)=ROW(表B!$D$2:$D$4)-ROW(表B!$D$1),表B!$E$2:$E$4,""),""))
问题2:多组行数据的公式调整
如果你的待匹配内容是A5开始向下的多行连续数据,有两种适配方案:
- 普通方案:将问题1的公式中
A5设为相对引用,输入B5后直接下拉填充到所有行即可。 - 溢出数组方案(Excel 365专属):仅需在B5输入一次公式,自动向下溢出所有行的匹配结果,示例中待匹配范围为
A5:A100,可自行调整:
=BYROW(A5:A100,LAMBDA(x,TEXTJOIN(",",TRUE,UNIQUE(IF(ISNUMBER(SEARCH(表B!$D$2:$D$4,x)),表B!$E$2:$E$4,"")))))
问题3:SKU部分匹配场景的处理
上述公式本身支持SKU部分关键词匹配,无需额外修改逻辑:只要SKU文本中包含表B的水果关键词,就会返回对应价格标识,未匹配到的关键词会自动忽略。
如果SKU和水果的映射规则更复杂,可先新增辅助列提取SKU对应的水果关键词,再套用上述匹配公式即可。
内容的提问来源于stack exchange,提问作者Kobe2424
相关产品推荐
相关产品推荐

