Excel - SUM 到列表末尾

Posted

技术标签:

【中文标题】Excel - SUM 到列表末尾【英文标题】:Excel - SUM to the end of the list 【发布时间】:2011-07-13 09:23:09 【问题描述】:

我在 Excel 2003 中有一个类似数据库的表,在第 6 行有一个包含 AutoFilters 的标题行,以及从第 7 行到第 160 行的数据。第 1 - 5 行是工作表标题、列组标题和我无法摆脱的指令。

我还在此区域中为数字列显示SUM(X6:X160)SUBTOTAL(109,X6:X160)。我不想在表格底部显示它,因为有几个用户经常向该表格添加行并且他们定期销毁公式。

问题:每当用户将数据添加到表的末尾时,就需要更新 SUM 和 SUBTOTAL 公式以扩大范围 - 不用说 - 大多数人都忘记了。 p>

我可以自己扩展公式以覆盖所有行,直到 -say-row 500 并隐藏剩余的行,因此用户需要在到达表格的可见端时“插入”行 - 这反过来会更新公式,但我不认为这是一种非常安全的方式......了解我的用户。

问题:有没有办法从 X6“到列 X 的末尾”创建 SUM 和 SUBTOTAL?

结论

我使用 SUM(OFFSET(....)),从标题中的一个新字段中获取“高度”参数,该字段以 =COUNTA($A:$A)-1 显示“记录数”(列标题文本为 -1这也被计算在内),因为从业务上下文中可以清楚地看出,对于任何有效的数据记录,A 列中必须存在一个键值,并且不允许有空行(我至少可以培训用户那么多)-加上用户利益不仅可以看到 SUM,现在还可以看到标题冻结窗格中的 COUNT 条记录。

【问题讨论】:

【参考方案1】:

好吧,我认为您可以使用 =SUM(C:C) 之类的方法对 C 列中的所有单元格求和,它会自动排除文本我尝试过它并且它有效

【讨论】:

【参考方案2】:

使用 Offset()Count() 似乎是最流行的,而且我确信使用起来效率最高。

=SUM(OFFSET($X$6,0,0,COUNT($X$6:$X$1000)))

就个人而言,我倾向于使用 Indirect() 很多东西。它可能会运行得更慢,但它可以工作。它可以帮助我查看正在创建的范围。不过要小心,因为范围的一部分保存在文本中,所以当您移动公式时它不会更新。那会让你绊倒。反正你来了。

=SUM(INDIRECT("$X$6:$X$" & COUNT($X$6:$X$1000)))

您可以使用 iDevlop 指出的动态范围或将 Offset()Indirect() 放在 Sum() 中,例如我刚做了。

无论哪种方式你都要小心,因为 Indirect()Offset() 是Volatile Functions。通常你想避免这种情况。

我还找到了this guy,他使用了 Index()Match(),它们不是 volatile 函数。

编辑:

考虑一下(因为我刚刚在我的电子表格上做过)..

如果您知道您的数据会有合理的限制,例如 1000,您可以只使用 =SUM($X$6:$X$1000),它会跳过空白,即使是小计方法 1 或 101(平均)。

【讨论】:

如果您有任何空白单元格,则偏移量会下降,因为您从每个空白单元格的 SUMmed 范围中丢失了 1 行【参考方案3】:

当然!而且我发现将总数放在顶部会更好,因为您还可以冻结第一行以保持这些总数可见。 只需向 Google 询问“Excel 动态范围”即可。这里有几个链接:http://www.ozgrid.com/Excel/DynamicRanges.htmhttp://support.microsoft.com/kb/830287

这一切都是通过 Offset() 和 Count() 函数的组合完成的。

【讨论】:

【参考方案4】:

将此公式放在数据范围的最后一行(不能是表格/列表)这可能会解决您的问题

=SUM(INDIRECT(("x6:x"&ROW()-1)))  

或者如果你有表格/列表,那么你可以使用这个公式

=sum([table header name])

就像你想总结类型标题的“金额”列

=sum([Amount]) 

在列表/表格的最后一行

【讨论】:

以上是关于Excel - SUM 到列表末尾的主要内容,如果未能解决你的问题,请参考以下文章

SSIS excel源列名称不匹配错误

将excel中的相同公式复制到列中的每个单元格但只更改公式? [重复]

我有一个大型 CSV 文件,其中包含单个列中的信息。如何使用 python 在 excel 中复制“文本到列”任务? [复制]

SQL2000数据库中合并两行相同条件的值到列中怎么操作?

怎么解决 ? (将列表添加到列数据框pyspark)

双向将字符串的“虚拟”列表绑定到列