我有一个跨同一行和同一工作表的非连续范围,我想根据条件对其进行求和。由于它们是非连续的,因此我使用间接
我遇到的问题是H5
,、、和无法更新到 H6、J6、L6、N6J5
和P6。我有大约 30 行正在寻求你们这些天才专家的帮助,这远远超出了我的智商。L5
N5
P5
=SUM(SUMIF(INDIRECT({"H5","J5","L5","N5","P5"}),">0"))
我使用的是 Excel 最新版本,或者 365 自带的任何桌面版本
答案1
SUMPRODUCT,它避免了易变的INDIRECT并且可以被拖动/复制:
=SUMPRODUCT(H5:P5,(H5:P5>0)*(ISEVEN(COLUMN(H5:P5))))
(H5:P5>0)*(ISEVEN(COLUMN(H5:P5)))
创建一个大小和形状与范围相同的数组1
。0
然后 SUPRODUCT 将范围中的值与该数组中的值相乘1
,0
并返回值的总和。
由于1
乘以任何数字都是该数字,0
乘以任何数字都是该数字,因此0
它将只返回满足大于 0 且在偶数列中的值,即 H、J、L、N 和 P。
使用 Office 365
我们可以使用 FILTER 来筛选出想要的值然后求和。我们使用 LET 来限制重复的引用:
=LET(r,H5:P5,SUM(FILTER(r,(r>0)*(ISEVEN(COLUMN(r))))))
然后,如果">0"
有一种将 SUMIF 用作数组公式的方法,并且您实际上不需要条件,>0
那么只需使用可以使用不相交范围的 SUM():
=SUM(H5,J5,L5,N5,P5)
答案2
或者将“>0”测试纳入更一般的解决方案:
=SUM((H5>0)*H5,(J5>0)*J5,(L5>0)*L5,(N5>0)*N5,(P5>0)*P5)