SUBTOTAL函数的使用方法及其可能的"BUG"?

zha7090
zha7090

创作者俱乐部成员

当数据表格需要进行分类汇总的时候,SUBTOTAL函数是一种非常实用的工具。

具体语法形式为:SUBTOTAL(function_num,ref1,ref2, ...)

Function_num 为 1 到 11(包含隐藏值)或 101 到 111(忽略隐藏值)之间的数字,指定使用何种函数(见下图)在列表中进行分类汇总计算。ref1……refn参数为要对其进行分类汇总计算的第1至29个命名区域或引。必须是对单元格区域的引用。

我们分别在以下几种情况下观察三种函数的“求和”统计结果有什么不同(请高手们关注第四部分,可疑的BUG)。

一、在表格数据均完整显示的情况下,三种函数的计算结果无不同。

如图所示,为某公司在在北京、上海两地三年来商品销售情况,分别采用三种函数“=SUM(D2:D19)”、“SUBTOTAL(9,D2:D19)”、“SUBTOTAL(109,D2:D19)”计算销售额,均为30710。计算结果符合预期。

二、当将北京市电视机销售数据进行隐藏,我们可以看到SUM(D2:D19)、SUBTOTAL(9,D2:D19)两者计算结果没有变化,仍为30170,而SUBTOTAL(109,D2:D19)数据发生了改变(见下图)。首先我们记住:SUM(D2:D19)不管数据是否被“筛选”或“隐藏”,它都是D2:D19的和,因此其数值不会发生变化。而SUBTOTAL(109,D2:D19)计算时自动忽略了“隐藏”数据,SUBTOTAL(9,D2:D19)计算则是包含“隐藏”数据的,故SUBTOTAL(109,D2:D19)在数据有隐藏的时候,其统计范围会扣除“隐藏”数据,结果自然也会发生变化了。计算结果符合预期。

三、如果我们不是对数据隐藏,而是对数据进行“筛选”,结果会如何呢?

例如,我们只统计北京市的销售总额情况,下图是三种函数的求和结果。SUM(D2:D19)不管数据是否被“筛选”或“隐藏”,它都是D2:D19的和,因此其数值不会发生变化。而SUBTOTAL(9,D2:D19)、SUBTOTAL(109,D2:D19)均是计算“筛选”后的数据值,因为没有“隐藏”数据。故SUBTOTAL的两种不同形式的函数计算结果一致,与SUM(D2:D19)不同。计算结果符合预期。

四、可疑的“BUG”:当我们在“筛选”的基础上,同时进行部分数据“隐藏”。SUNTOTAL函数似乎是出了错误。不知道是我的理解错误,还是软件"BUG"?需要高手指点。

具体操作情况步骤如下:

  1. 同前面的“第三部分”,我们首选“筛选”选中“北京”

  1. 再将“北京”的“电视”销售数据隐藏。

  1. 三种函数求和结果如下图所示

  1. 疑问:SUBTOTAL(9,D2:D19)的计算结果有误?!因为该函数应该包含“隐藏”数据的计算。故其结果应该与前面“第三部分”的单纯“筛选”计算结果一致,即为“16360”,但实际计算过程中,却自动“忽略”了“隐藏”数据。故此认为是“可疑”的“BUG”。请高手指点。

谢谢!

广东省
浏览 4890
收藏
14
分享
14 +1
5
+1
全部评论 5
 
亂雲飛渡
· 广东省
回复
 
知言
666666
· 江苏省
回复
 
清华学弟任泽岩
清华学弟任泽岩

创作者俱乐部成员

单独使用组合和隐藏,结果都是正确的 在筛选后,使用组合和隐藏SUBTOTAL 9的结果就会出现错误
· 中国
回复
清华学弟任泽岩
清华学弟任泽岩

创作者俱乐部成员

视频已经发在创作者俱乐部群里了,请查收 不要在筛选状态下,使用隐藏或组合!
· 中国
回复
 
zha7090
zha7090

创作者俱乐部成员

发此帖一是让初学者了解到SBUTOATAL函数的意义。另一方面,也是希望高手解答本人的疑问,主要见于帖子的第四部分: SUBTOTAL函数在表格进行:筛选+隐藏部分数据时,SUBTOTAL(9,……)计算应该包含“隐藏”数据,而SUBTOTAL(109,……)计算时应该不包含“隐藏”数据,故其结果应该不同。但实际结果却一样,与预期不同。为什么?
· 广东省
回复