如何在ARRAYFORMULA中结合SUBTOTAL与IF实现可见行求和?
解决SUBTOTAL结合每行最大值求和的问题
问题原因:
SUBTOTAL的第二个参数仅接受实际单元格范围,无法识别IF或ARRAYFORMULA生成的数组结果,因此直接嵌套会触发报错。方案1:使用辅助列
- 在空白列(比如O列)的O3单元格输入公式:
=IF(B3>N3,B3,N3),下拉填充到所有行(或用=ARRAYFORMULA(IF(B3:B>N3:N,B3:B,N3:N))批量生成) - 再用
=SUBTOTAL(109,O3:O)求和,该公式会自动忽略隐藏行的辅助列值。
- 在空白列(比如O列)的O3单元格输入公式:
方案2:无需辅助列(SUMPRODUCT+SUBTOTAL组合)
使用以下公式直接计算:=SUMPRODUCT(SUBTOTAL(103,OFFSET(B3,ROW(B3:B)-ROW(B3),0,1))*IF(B3:B>N3:N,B3:B,N3:N))原理说明:
SUBTOTAL(103,OFFSET(B3,ROW(B3:B)-ROW(B3),0,1)):逐行判断该行是否可见(可见行返回1,隐藏行返回0)IF(B3:B>N3:N,B3:B,N3:N):生成每行两列的最大值数组SUMPRODUCT将两个数组对应元素相乘后求和,实现仅对可见行的每行最大值累加。
内容的提问来源于stack exchange,提问作者user1459258
相关产品推荐
相关产品推荐

