Excel中判断Name为当前行名称子集时用SUMIF求和的实现方法
Excel 层级前缀匹配求和解决方案
假设你的表格结构如下,表头在第1行,数据范围为A2:B5,C列存放计算结果:
| Name | Value | 期望结果 |
|---|---|---|
| X | 1 | 1 |
| X-Y | 1 | 2 |
| X-Y-Z | 0 | 2 |
| X-V | 1 | 2 |
公式实现
全版本兼容方案(支持Excel 2007及以上)
在C2单元格输入以下公式,下拉填充即可:=SUMPRODUCT(--ISNUMBER(SEARCH("-"&$A$2:$A$5&"-", "-"&A2&"-")), $B$2:$B$5)
Excel 365/2021 简化方案
在C2单元格输入以下公式,下拉填充即可:=SUM(FILTER($B$2:$B$5, ISNUMBER(SEARCH("-"&$A$2:$A$5&"-", "-"&A2&"-"))))
逻辑说明
- 核心匹配逻辑通过给所有Name前后拼接分隔符
-实现精准前缀匹配,避免短名称和长名称非分隔符位置的字符重名导致误判(比如避免XA被误识别为X的子集) SEARCH函数判断每个处理后的Name是否是当前行处理后Name的子串,是则返回位置编号,否则返回错误- 通过
ISNUMBER将匹配结果转为布尔值,再转为1/0后和对应Value相乘求和,得到所有符合条件的Value汇总值
注意事项
- 如果你的层级分隔符不是
-,把公式里所有的-替换为你实际使用的分隔符(比如/、_等)即可 - 公式里的
$A$2:$A$5、$B$2:$B$5是绝对引用,要根据你实际的数据范围调整,下拉时不要去掉$符号
内容的提问来源于stack exchange,提问作者Emjora
相关产品推荐
相关产品推荐

