基于灵活过滤数组的Excel按行求和公式优化需求
数据表格
| A | Team | Revenue_A | Revenue_B | Filter | Total | Revenue_A | Revenue_B | ||
|---|---|---|---|---|---|---|---|---|---|
| 1 | Employee | Team | Revenue_A | Revenue_B | Filter | T_01 | |||
| 2 | E_01 | T_01 | 500 | 20 | |||||
| 3 | E_01 | T_01 | 600 | 30 | Employee | Total | Revenue_A | Revenue_B | |
| 4 | E_01 | T_01 | 100 | 70 | E_01 | 1320 | 1200 | 120 | |
| 5 | E_02 | T_01 | 800 | 10 | E_02 | 1090 | 1000 | 90 | |
| 6 | E_02 | T_01 | 200 | 80 | E_04 | 1135 | 1100 | 35 | |
| 7 | E_03 | T_02 | 400 | 45 | |||||
| 8 | E_03 | T_02 | 300 | 30 | |||||
| 9 | E_03 | T_02 | 500 | 25 | |||||
| 10 | E_03 | T_02 | 100 | 50 | |||||
| 11 | E_04 | T_01 | 300 | 20 | |||||
| 12 | E_04 | T_01 | 800 | 15 |
已完成的基础数据处理
- 在
Range F4:F6中,基于Cell G1的条件过滤Columns A:B数据,使用公式:F4 = LET( a,FILTER($A:$A,$B:$B=$G$1), UNIQUE(CHOOSECOLS(a,1))) - 在
Range H4:I6中,基于Range F4:F6的动态数组计算对应列求和,使用公式:H4 = SUMIFS($C:$C,$A:$A,$F4#) I4 = SUMIFS($D:$D,$A:$A,$F4#)
以上功能运行正常。
当前需求与问题
需在Range G4:G6区域中,对Range H4:I6每行的数值求和。当前使用的公式为:
=LET( a;SUMIFS($C:$C,$A:$A,$F4#); b;SUMIFS($D:$D,$A:$A,$F4#); a+b)
该公式可正常工作,但原文件中存在更多列,按此方式需串联大量SUMIFS函数,过于繁琐。
要求
- 为
Range G4:G6单独设置公式 - 引用
Range F4:F6的动态数组 - 不使用一体化公式
解决方案
方案1:直接引用已计算的H、I列(最简洁)
利用已完成的H4:I6计算结果,直接对每行求和,输入到G4:
=SUM(H4:I4)
下拉填充到G6即可。如果需要动态数组自动溢出效果,可使用:
=BYROW(H4:I6,SUM)
该公式会自动填充到G4:G6,无需手动下拉。
方案2:从原始数据直接计算(不依赖H、I列)
若不想依赖H、I列的结果,直接基于F4#的员工数组计算总收入,可使用以下公式(支持任意数量的收入列扩展):
=BYROW($F4#,LAMBDA(x,SUM(SUMIFS($C:$D,$A:$A,x))))
将$C:$D替换为实际的所有收入列范围(如$C:$Z)即可,公式会自动对每个员工的所有收入列求和并溢出到G4:G6。
也可使用MMULT实现:
=MMULT(SUMIFS($C:$D,$A:$A,$F4#),SEQUENCE(COLUMNS($C:$D),1,1,0))
同样只需修改$C:$D为目标收入列范围即可适配多列场景。
内容的提问来源于stack exchange,提问作者Michi
相关产品推荐
相关产品推荐

