如何基于相邻单元格支付状态对Excel行内奇数列数值求和?
Excel公式修正:按相邻偶数列支付状态求和奇数列数值
问题场景
数据集从A3开始,奇数列(A、C、E…)存储数值,偶数列(B、D、F…)对应支付状态(PAID/NOTPAID),需要统计对应状态下的数值总和。
原公式问题
你之前的SUMPRODUCT公式存在两处逻辑错误:
- 求和范围
A3:S3包含了状态列(偶数列)的文本/空值,会导致计算异常 - 未将“偶数列状态”与“左侧奇数列数值”做精准对应
修正后的公式
统计"PAID"状态对应数值(单元格T3)
=SUMPRODUCT((MOD(COLUMN(B3:R3),2)=0)*(B3:R3="PAID")*A3:Q3)
统计"NOTPAID"状态对应数值(单元格U3)
=SUMPRODUCT((MOD(COLUMN(B3:R3),2)=0)*(B3:R3="NOTPAID")*A3:Q3)
公式解释
MOD(COLUMN(B3:R3),2)=0:筛选出所有偶数列的状态单元格(B、D…R)B3:R3="PAID"/B3:R3="NOTPAID":匹配目标支付状态A3:Q3:对应每个状态单元格左侧的奇数列数值,仅当前面两个条件同时满足时,该数值才会被计入求和
替代方案(更直观的列索引匹配)
如果觉得MOD判断列奇偶不够直观,可以用SEQUENCE直接指定对应列:
PAID求和
=SUMPRODUCT((INDEX(B3:S3,0,SEQUENCE(9,1,2,2))="PAID")*INDEX(A3:S3,0,SEQUENCE(9,1,1,2)))
NOTPAID求和
=SUMPRODUCT((INDEX(B3:S3,0,SEQUENCE(9,1,2,2))="NOTPAID")*INDEX(A3:S3,0,SEQUENCE(9,1,1,2)))
解释:SEQUENCE(9,1,2,2)生成2、4…18的列索引(对应偶数列状态),SEQUENCE(9,1,1,2)生成1、3…17的列索引(对应奇数列数值),精准匹配状态与数值列。
内容的提问来源于stack exchange,提问作者Chathura Uduwawala
相关产品推荐
相关产品推荐

