Excel公式:筛选后计算两列乘积和并排除隐藏行
解决Excel筛选后计算可见行乘积和的问题
你的表格结构
| Project | Rate | Jan_Hrs | Feb_Hrs | Mar_Hrs |
|---|---|---|---|---|
| P1 | 3 | 3 | 4 | 6 |
| P1 | 2 | 4 | 3 | 5 |
| P2 | 3 | 3 | 2 | 5 |
| P1 | 3 | 4 | 4 | 4 |
| P3 | 4 | 3 | 3 | 2 |
| P2 | 4 | 4 | 3 | 4 |
| Total | 66 | 60 | 79 |
问题原因
你之前用的=SUM($P$2:$P$7*Q2:Q7)是数组公式,但SUBTOTAL无法直接处理数组运算结果,必须传入单元格区域;你尝试的SUMPRODUCT组合大概率是列引用错误或OFFSET用法不对,导致无法正确识别隐藏行。
解决方案
根据你的Excel版本,选对应的公式:
1. Excel 365/2021(支持动态数组)
以计算Jan_Hrs的可见行总计为例(Rate×Jan_Hrs之和):
=SUM(FILTER(C2:C6*D2:D6, SUBTOTAL(103, OFFSET(B2:B6, ROW(B2:B6)-ROW(B2), 0, 1))))
- 逻辑:用
OFFSET把每行的Project单元格拆成单独区域,SUBTOTAL(103)判断行是否可见(可见返回1,隐藏返回0),FILTER筛选出可见行的Rate×Jan_Hrs结果,最后SUM求和。
2. 所有Excel版本(含旧版)
同样以Jan_Hrs为例,用SUMPRODUCT兼容所有版本:
=SUMPRODUCT(SUBTOTAL(103, OFFSET(B2:B6, ROW(B2:B6)-MIN(ROW(B2:B6)), 0, 1)) * C2:C6 * D2:D6)
- 逻辑:
SUBTOTAL(103)生成每行的可见状态(1=可见,0=隐藏),和Rate、Jan_Hrs相乘后,SUMPRODUCT自动求和,隐藏行因状态为0被排除。
注意事项
- 替换列引用:如果你的Rate在P列、Jan_Hrs在Q列,把公式里的
C2:C6换成P2:P6,D2:D6换成Q2:Q6,B2:B6换成Project列的对应区域(注意要排除Total行)。 - 计算Feb_Hrs/Mar_Hrs时,只需把工时列替换成对应列即可。
内容的提问来源于stack exchange,提问作者Ahmad
相关产品推荐
相关产品推荐

