【Excel】按包含求和公式
- 2026-11-14 15:16:37

推荐公式:
excel
=SUMPRODUCT((ISNUMBER(FIND(","&$A$2:$A$3&",",","&D2&",")))*($B$2:$B$3))公式解释:
","&D2&","- 在D2值前后加逗号,变成,a,b,,确保完全匹配","&$A$2:$A$3&","- 同样在A列值前后加逗号FIND()- 查找A列值是否在D2中ISNUMBER()- 判断是否找到(找到返回数字,否则返回错误)SUMPRODUCT()- 符合条件的对应B列值相乘并求和
示例验证:
A2:A3 =
a,bB2:B3 =
5,10D2 =
a,b结果:E2 =
15(5+10)
注意事项:
如果A列有更多数据,调整范围
$A$2:$A$3和$B$2:$B$3公式区分大小写,如果不需要区分大小写,用
SEARCH代替FIND确保D2中的值用逗号分隔且没有空格
这样无论D2是 a,b、b,a 还是只包含 a 或 b,都能正确计算对应的B列值之和。
求和用sumproduct,那包含关系的条件查找并去重的问题怎么解决呢?
推荐公式(Excel 365/2021):
excel
=TEXTJOIN(",", TRUE, UNIQUE(FILTER($B$2:$B$3, ISNUMBER(FIND($A$2:$A$3, D2))), FALSE))公式解释:
FIND($A$2:$A$3, D2)- 查找A列每个值是否在D2中ISNUMBER()- 转换为布尔值(TRUE/FALSE)FILTER($B$2:$B$3, ...)- 筛选出符合条件的B列值UNIQUE(..., FALSE)- 去除重复值(FALSE表示按列去重)TEXTJOIN(",", TRUE, ...)- 用逗号连接不重复的值
示例验证:
A2:A3 =
a,bB2:B3 =
M,MD2 =
a,b结果:E2 =
M(去重后只有一个"M")
其他解决方案:
方案2(老版本Excel,数组公式):
excel
=IFERROR(INDEX($B$2:$B$3, MATCH(0, COUNTIF($E$1:E1, $B$2:$B$3) + IF(ISNUMBER(FIND($A$2:$A$3, $D$2)), 0, 1), 0)), "")注意:这是一个数组公式,输入后按 Ctrl+Shift+Enter 结束,然后向下拖动填充。
方案3(使用辅助列,兼容性好):
在C2输入公式并下拉:
excel
=IF(ISNUMBER(FIND(A2, $D$2)), B2, "")在E2输入公式去重:
excel
=TEXTJOIN(",", TRUE, UNIQUE(FILTER(C2:C3, C2:C3<>"")))或老版本用:
excel
=IFERROR(INDEX($C$2:$C$3, MATCH(0, INDEX(COUNTIF($E$1:E1, $C$2:$C$3) + ($C$2:$C$3=""), 0), 0)), "")动态数组公式(Excel 365):
如果要垂直列出不重复值:
excel
=UNIQUE(FILTER(B2:B3, ISNUMBER(FIND(A2:A3, D2))), FALSE)如果B列可能有多个不同值:
假设:
B2 =
MB3 =
ND2 =
a,b
则结果为:M,N
注意事项:
如果不需要任何分隔符直接显示,可去掉
TEXTJOIN如果希望区分大小写,用
FIND;不区分用SEARCH公式中的范围
$B$2:$B$3和$A$2:$A$3可根据实际数据调整
完整示例:
这个方案会先筛选出D2中包含的A列对应的所有B列值,然后去重,最后用逗号连接显示。