Excel - SUM到列表的末尾

时间:2011-07-13 09:23:10

标签: excel excel-formula

我在Excel 2003中有一个类似数据库的表,第一行包含自动筛选的单个标题行,第7行到第160行的数据。第1 - 5行是工作表标题,列组标题和说明我无法摆脱。

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

问题:只要用户将数据添加到表的末尾,就需要更新SUM和SUBTOTAL公式以扩展范围 - 不用说 - 大部分都被遗忘了。

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

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

结论

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

4 个答案:

答案 0 :(得分:6)

我认为您可以使用类似= SUM(C:C)的内容来汇总C列中的所有单元格,它会自动排除文本我尝试了它并且它有效

答案 1 :(得分:5)

使用 Offset() Count()似乎是最受欢迎的,并且我确信使用效率最高。

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

就个人而言,我倾向于使用间接()。它可能会运行得更慢,但它的工作原理。它帮助我看到正在创建的范围。但是要小心,因为部分范围是用文本保存的,所以当你移动公式时它不会更新。那会让你失望。无论如何,你在这里。

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

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

您要小心,因为间接()偏移()Volatile Functions。通常你想避免这种情况。

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

修改

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

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

答案 2 :(得分:2)

当然可以!我发现将总数放在最高位置要好得多,因为你也可以冻结第一行以保持总数可见。
只需向Google询问“Excel动态范围”即可。以下是一些链接:
http://www.ozgrid.com/Excel/DynamicRanges.htm
http://support.microsoft.com/kb/830287

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

答案 3 :(得分:0)

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

int t[][1] = {1,2,3,4,5,6,7,8,9};

或者如果您有表格/列表,则可以使用此公式

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

就像您要对“金额”列中的标题类型求和

=sum([table header name])

列表/表的最后一行