如何组合SUBTOTAL与SUMIF函数按journal entry number统计列I中的正数小计?
如何组合SUBTOTAL与SUMIF函数按journal entry number统计列I中的正数小计?
嘿,我太懂你处理几千条数据的崩溃了——手动逐行加公式简直是噩梦!你遇到的核心问题我get到了:SUBTOTAL直接求和因为借贷平衡总得到0,SUMIF能抓正数但没法按journal entry分组,也不支持筛选后的动态更新,对吧?给你两个实用方案,按需选就行:
方案一:用SUMPRODUCT+SUBTOTAL实现动态分组统计(支持筛选)
如果你想保留原数据结构,用公式实现按F列的journal entry编号分组、仅统计可见行中I列的正数之和,可以用这个数组公式(旧版Excel需要按Ctrl+Shift+Enter确认,新版Excel自动支持动态数组):=SUMPRODUCT(SUBTOTAL(9,OFFSET(I2,ROW(I2:I15)-ROW(I2),0,1,1))*(I2:I15>0)*(F2:F15=F2))
我给你拆解开讲每个部分的作用:
SUBTOTAL(9,OFFSET(I2,ROW(I2:I15)-ROW(I2),0,1,1)):对I列每一行单独执行SUBTOTAL,自动忽略被隐藏的行,返回的数组里可见行是自身数值,隐藏行则为0*(I2:I15>0):过滤掉I列中非正数的行,只保留符合要求的正数部分*(F2:F15=F2):只匹配当前行F列的journal entry编号,实现按组统计的效果- 最后SUMPRODUCT把这些条件相乘后求和,就能得到对应组可见行的正数总和
批量应用小技巧:
- 把公式放在第一个journal entry组的小计行(比如每组的最后一行)
- 选中这个公式单元格,双击单元格右下角的填充柄(那个小方块),Excel会自动匹配所有F列的分组,批量填充公式,完全不用逐行手动输入!
方案二:用数据透视表(几千条数据的最优解)
要是你要处理的是几千条数据,真心推荐用数据透视表,比写公式省事10倍,还自带分组、筛选、折叠明细的功能:
- 选中所有数据区域(一定要包含表头哦)
- 点击【插入】选项卡→【数据透视表】,按提示选择放在新工作表或当前工作表都行
- 在右侧的字段列表里操作:
- 把「journal entry number」(F列)拖到【行】区域
- 把I列拖到【值】区域,然后点击值区域的字段,选择【值字段设置】,把汇总方式改成「求和」
- 再点击值区域的字段下拉,选择【值筛选】→【大于】,输入0后确定
- 搞定!现在数据透视表会自动统计每个journal entry的正数之和,还能:
- 点击行区域的小箭头,折叠/展开单个entry的明细,直接只看小计内容
- 源数据筛选后,右键点击数据透视表→【刷新】,结果会自动更新
- 后续要统计金额区间的话,直接给数据透视表的行或值区域加筛选,或者用分组功能设置金额区间,完全不用手动计算!
补充:统计金额区间的小技巧
当你拿到每个entry的正数小计后,要统计不同金额区间的entry数量,比如统计1000-5000之间的entry数,用COUNTIFS就行:=COUNTIFS(小计列,">1000",小计列,"<=5000")
把公式里的「小计列」换成你放结果的列,修改区间数值就能批量统计啦。
备注:内容来源于stack exchange,提问作者user2284151




