Excel单公式实现基于GL代码中间4位的SUMIF求和需求
无辅助列实现GL Code特定子串筛选求和
需求说明
基于以下Excel数据:
| GL Code | Cost |
|---|---|
| 1123400 | 10 |
| 1123400 | 25 |
| 1123400 | 100 |
| 1234567 | 1000 |
| 1113400 | 50 |
| 1234567 | 200 |
| 1113400 | 50 |
需用单个公式筛选出GL Code中从第2位开始的4个字符为1234或1134的行,对对应Cost求和(目标结果:$235)。
解决方案
1. 兼容全版本Excel的数组公式
适用于所有Excel版本(非365/2021版本输入时需按 Ctrl+Shift+Enter 确认):
=SUM(IF((MID(A2:A8,2,4)="1234")+(MID(A2:A8,2,4)="1134"),B2:B8,0))
- 逻辑拆解:
MID(A2:A8,2,4):提取每个GL Code从第2位开始的4个字符(条件1)+(条件2):用加法实现逻辑“或”,满足任一条件返回1,否则0IF(...):符合条件的行取对应Cost值,不符合则取0- 外层
SUM对所有符合条件的Cost求和
2. Excel 365/2021简洁版公式
利用动态数组特性,无需数组输入:
=SUM(SUMIFS(B2:B8,A2:A8,"?"&{"1234","1134"}&"*"))
- 逻辑拆解:
"?"&{"1234","1134"}&"*":构造通配符规则,?匹配第1位任意字符,*匹配子串后任意字符,精准定位从第2位开始的目标子串SUMIFS分别计算两个匹配规则对应的Cost总和,返回包含两个值的数组- 外层
SUM将两个结果相加得到最终总和
结果验证
符合条件的行:
- GL Code为
1123400的3行:10+25+100=135 - GL Code为
1113400的2行:50+50=100
总和:135+100=235,与目标结果一致。
内容的提问来源于stack exchange,提问作者Syzmik
相关产品推荐
相关产品推荐

