在日常数据处理工作中,Excel用户常会遇到这样一个棘手问题:如何根据一个关键词列表,判断某个单元格列中是否包含列表中的任意单词,并对匹配成功的行进行求和?例如,有一张销售订单表,其中“商品名称”列包含“苹果手机”“华为平板”“三星耳机”等,而你需要对包含“苹果”“华为”等品牌关键词的订单金额进行汇总。这一需求看似简单,但手动筛选既耗时又容易出错。本文将为读者提供多种高效解决方案,助你轻松实现“模糊匹配求和”。
问题还原:从一张订单表说起
假设你手头有一张Excel表格(如下图示意),A列为“商品名称”,B列为“销售金额”。此外,你有一个品牌关键词列表,放在D列,包含“苹果”“华为”“小米”等。目标是在E2单元格返回所有商品名称中包含D列任意关键词对应的金额总和。
| A | B | C | D |
|---|---|---|---|
| 苹果手机 | 5000 | 苹果 | |
| 华为平板 | 3000 | 华为 | |
| 小米耳机 | 1000 | 小米 | |
| 三星手机 | 4500 | 三星 | |
| 苹果电脑 | 8000 | ||
| 华为手表 | 2000 |
期望结果:应返回5000+3000+1000+4500+8000+2000?注意:三星手机也包含关键词“三星”,所以全部匹配的行金额都要计入,结果应为23500。
方案一:SUMPRODUCT + ISNUMBER + FIND 组合拳
这是最经典且无需辅助列的方法。核心思路是利用FIND函数在A列每个单元格中查找D列的每个关键词,若找到则返回数字(位置),否则返回错误值,再通过ISNUMBER转为TRUE/FALSE,最后与B列相乘并求和。
公式如下(假设数据行为第2至第7行,D列关键词在D2:D5):
=SUMPRODUCT((ISNUMBER(FIND(D2:D5,A2:A7)))*B2:B7)
关键点说明:
- FIND(D2:D5,A2:A7) 会生成一个4行×6列的矩阵,每个元素代表D列某个关键词在A列某个单元格中第一次出现的位置,若不存在则返回#VALUE!。
- ISNUMBER(...) 将矩阵转为TRUE/FALSE。
- 与B2:B7相乘时,TRUE自动转为1,FALSE转为0,SUMPRODUCT自动将结果累加。
注意:此公式要求Excel版本支持数组运算,Excel 2021及365版本可直接输入,老版本需按Ctrl+Shift+Enter结束。
方案二:使用辅助列 + SUMIFS(适合初学者)
如果对数组公式感到头疼,可以分步操作:先判断A列每个单元格是否包含D列中的任何一个关键词,然后在辅助列中标记“是”或“1”,最后用SUMIFS求和。
步骤一:在C2单元格输入公式并下拉:
=IF(SUMPRODUCT(--ISNUMBER(FIND(D$2:D$5,A2)))>0,1,0)
这里--将TRUE/FALSE转为1/0,SUMPRODUCT统计匹配的关键词个数,大于0表示至少匹配一个。
步骤二:在E2输入=SUMIFS(B2:B7,C2:C7,1),即可得到结果。
此法直观易理解,且后期修改关键词列表时只需更新D列,辅助列自动刷新。
方案三:TEXTJOIN + FILTERXML(针对高版本Excel)
Excel 365用户可利用动态数组函数实现更简洁的写法。先利用TEXTJOIN将D列关键词用“|”连接成正则表达式模式,然后使用FILTERXML进行匹配。不过,最简洁的方式是直接使用新函数SUM配合BYROW:
=SUM(BYROW(A2:A7,LAMBDA(r,SUM((ISNUMBER(FIND(D2:D5,r)))*1)*B2:B7)))
但此写法复杂,不如SUMPRODUCT直观。实际工作中,推荐优先使用方案一。
常见陷阱与优化建议
- 大小写敏感:FIND函数区分大小写,若需忽略大小写,请使用SEARCH函数替代FIND。
- 关键词部分重叠:例如关键词列表包含“苹果”和“苹果手机”,会导致重复计数。建议对关键词按长度降序排列,或使用VBA进行去重处理。
- 空单元格处理:若A列有空白单元格,FIND函数会返回错误,ISNUMBER会视为FALSE,不影响结果。
- 大数据量性能:当数据行数超过数万行时,SUMPRODUCT数组公式可能较慢,可考虑使用Power Query或VBA。
案例扩展:不仅仅是求和
掌握上述方法后,你还可以轻松实现类似需求:如统计匹配行的数量(将公式中的B列改为1)、计算平均值(结合AVERAGEIFS)等。例如,统计包含任意品牌关键词的订单数量,只需将公式改为:
=SUMPRODUCT(--(ISNUMBER(FIND(D2:D5,A2:A7))))
此举同样能快速获得匹配成功次数。
结语
Excel中“根据列表匹配列内单词并求和”的需求,本质上是模糊匹配与条件求和的结合。通过本文介绍的SUMPRODUCT函数组合,你无需编写复杂宏代码,即可在几分钟内完成任务。无论你是财务、销售还是数据分析岗位,这一技巧都能显著提升工作效率,避免手工筛选带来的误差。建议读者在自己的数据中试用以上方法,并灵活调整关键词范围,你会发现Excel真正的高效之处。