You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Excel中如何在SUMIF公式中引用筛选后的数据表结果?

Excel中如何在SUMIF公式中引用筛选后的数据表结果?

嘿,我太懂你这种卡壳的感觉了!想用SUMIF只算筛选后符合部门ID的总金额,直接套SUBTOTAL肯定不行,因为它俩的逻辑根本不搭——SUBTOTAL是给整个区域出个汇总数,没法跟着SUMIF的条件逐行判断哪行是可见的。我给你几个亲测有效的解决办法,你按需选:

方法一:用SUMPRODUCT+SUBTOTAL逐行判断(兼容所有Excel版本)

这个方法最稳妥,不管你用的是旧版还是365都能用,公式长一点但逻辑很清晰:

=SUMPRODUCT(SUBTOTAL(109,OFFSET(Table2[Total],ROW(Table2[Total])-MIN(ROW(Table2[Total])),0,1)),--(Table2[Dept ID]=F2))

我给你拆解开讲:

  • SUBTOTAL(109, OFFSET(...)):这里用OFFSET把Total列拆成单个单元格,SUBTOTAL(109)会判断这个单元格是否是筛选后可见的——可见就返回它的值,隐藏就返回0
  • --(Table2[Dept ID]=F2):把“部门ID等于F2”这个条件转成1或0(符合条件是1,不符合是0)
  • SUMPRODUCT会把这两组数对应相乘,再把所有结果加起来,最后得到的就是筛选后符合部门ID的总金额

方法二:用AGGREGATE函数(适合2010及以后版本)

AGGREGATE比SUBTOTAL更灵活,能直接处理数组还忽略隐藏行,公式更简洁:

=AGGREGATE(9,7,IF(Table2[Dept ID]=F2,Table2[Total],""))

注意哦:

  • 要是你用的是2019及以前的非365版本,输入完公式得按Ctrl+Shift+Enter回车(数组公式的要求);365/2021版本直接回车就行
  • 公式里的参数7是关键,它会忽略筛选隐藏的行;要是你还想同时忽略手动隐藏的行,这个参数也能搞定

方法三:Excel 365专属简化版(用FILTER+SUBTOTAL)

如果你用的是365版本,直接用FILTER筛选符合条件的行,再结合SUBTOTAL判断可见性:

=SUM(FILTER(Table2[Total],(Table2[Dept ID]=F2)*(SUBTOTAL(103,OFFSET(Table2[Dept ID],ROW(Table2[Dept ID])-MIN(ROW(Table2[Dept ID])),0,1))=1)))

这个逻辑和方法一类似,只是用FILTER先把符合部门ID的行捞出来,再只保留其中可见的行求和,操作起来更直观。

最后再提一句你原来的问题出在哪:你之前写的=SUMIF(Table2[Dept ID],F2,SUBTOTAL(9,Table2[Total])),这里SUBTOTAL算的是整个Total列的可见总和,SUMIF会把这个固定值重复给每个符合条件的行,结果自然不对,而且公式本身的逻辑就不符合Excel的计算规则,所以才会报错~

这样应该就解决了,你试试哪个方法顺手就用哪个!

火山引擎 最新活动