Excel - 汇总然后小计?

Posted

技术标签:

【中文标题】Excel - 汇总然后小计?【英文标题】:Excel - roundup then subtotal? 【发布时间】:2017-11-08 15:41:07 【问题描述】:

一位同事在“X4:X38”中有一个值数组。由于这些都在一个可以过滤的表中,她想使用小计函数对它们求和 - 但希望首先将所有值四舍五入。

=SUM(ROUNDUP(X4:X38,0))

效果很好。然而,

SUBTOTAL(9,ROUNDUP(X4:X38,0))

生成通用的“您键入的公式包含错误”消息。我尝试了各种明显的东西,比如在“综述”部分周围加上额外的括号等。

任何帮助将不胜感激。

【问题讨论】:

我稍后会看一下,但我相信纯公式可能无法做到这一点(除非您想使用辅助列,在这种情况下可能会很容易)。我回想起过去对SUBTOTAL 的限制感到沮丧的个人经历。但是,使用 VBA 可能是可行的。 【参考方案1】:

可以使用以下公式在没有帮助列的情况下执行此操作:

=SUMPRODUCT(SUBTOTAL(2,OFFSET(X4:X38,ROW(X4:X38)-MIN(ROW(X4:X38)),0,1)),ROUNDUP(X4:X38,0))

OFFSET 有效地将范围分解为单个单元格,这些单元格传递给 SUBTOTAL 函数,并根据每个单元格在过滤后是否可见返回一个 1 或 0 值的数组 - 该数组乘以四舍五入的值给出四舍五入可见值的总和。

另一种方法是像这样使用AGGREGATE函数

=SUMPRODUCT(ROUNDUP(AGGREGATE(15,7,X4:X38,ROW(INDIRECT("1:"&SUBTOTAL(2,X4:X38)))),0))

考虑到复杂性,辅助列可能是更可取的方法

【讨论】:

聪明的解决方案。不幸的是,它需要使用 volatile 函数,所以我同意帮助列可能会更好,只是为了保持简单。不过,很好的答案。 +1 前提是这是一个如上所述的 volatile 函数,这是一个非常聪明的答案并标记为答案。谢谢。 SUBTOTAL 中未包含此功能,这很令人惊讶——这肯定不会是那么不寻常的情况吗? @Statsanalyst 我同意SUBTOTAL 功能严重缺乏功能。通常,如果我想对过滤后的数据执行任何类型的复杂功能(仅对非隐藏数据执行计算),我只需放弃并使用辅助列与SUBTOTAL 结合使用,因为如所示,有时可以这样做没有帮助列,但如果您的电子表格包含大量数据,则可能效率低下或过于复杂。【参考方案2】:

经过调查,似乎没有辅助列是不可能的。

添加一个辅助列,用于对列 X 中的各个值进行四舍五入,例如在单元格Y4 中键入以下公式并向下拖动到Y38

= ROUNDUP(X4,0)

然后代替

= SUBTOTAL(9,ROUNDUP(X4:X38,0))

使用:

= SUBTOTAL(9,Y4:Y38)

然后,如果需要,您可以隐藏帮助列。当然,辅助列不必是列Y,它可以是任何列,例如数据结束位置最右侧的一列。

【讨论】:

以上是关于Excel - 汇总然后小计?的主要内容,如果未能解决你的问题,请参考以下文章

dplyr 用小计汇总

SQL SEVER分类汇总后如何让小计和总计放到下面

excel如何将数据透视表中的汇总项去掉?

汇总以仅保留总计并删除小计

T-SQL多个小计+合计,分类汇总

T-SQL多个小计+合计,分类汇总