SUBTOTAL函数的使用方法及其可能的"BUG"?
创作者俱乐部成员
当数据表格需要进行分类汇总的时候,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"?需要高手指点。
具体操作情况步骤如下:
同前面的“第三部分”,我们首选“筛选”选中“北京”
再将“北京”的“电视”销售数据隐藏。
三种函数求和结果如下图所示
疑问:SUBTOTAL(9,D2:D19)的计算结果有误?!因为该函数应该包含“隐藏”数据的计算。故其结果应该与前面“第三部分”的单纯“筛选”计算结果一致,即为“16360”,但实际计算过程中,却自动“忽略”了“隐藏”数据。故此认为是“可疑”的“BUG”。请高手指点。
谢谢!
创作者俱乐部成员
创作者俱乐部成员
创作者俱乐部成员