在Excel中,如何求和当前单元格上方的所有数字?


31

我想在Excel中有一列,由标题,一堆数字组成,然后在底部具有这些数字的总和。我希望总和能够适应总和以上的新数字的插入。像这样:

Numbers
 1
 2
 5
10

18        Total

如果以后在列表的中间插入10个新数字,则希望总和自动将它们包括在内。

我知道该SUM()函数可以求和整列,但是如果总和也位于该列中,那么它将抱怨循环引用。我怎样才能将总数加起来呢?

Answers:


51

函数ROW()COLUMN()将给出当前单元格的行和列。在ADDRESS()函数中使用它们可以创建一个字符串,该字符串表示从当前列的顶部到总数上方的行的范围。然后使用该INDIRECT()函数将该字符串转换为实际范围以提供给该SUM()函数。总单元格的公式将为:

=SUM(INDIRECT(ADDRESS(1,COLUMN())&":"&ADDRESS(ROW()-1,COLUMN())))

将其放在电子表格的任何单元格中,它将产生该单元格上方列中所有数字的总和。


1
@ user370646实际上,我刚刚在Excel 2010中使用添加的不同单元格中的几种不同类型的公式对它进行了测试,并且它可以正常工作。(如果要添加的单元格包含用总和引用单元格的公式,则它的确会失败,并产生循环引用错误。)您是否有特定的示例?
Mark Meuer 2014年

1
百万次+1。这在Google表格中有效,求和函数的范围-不要-自动更新。非常感谢。
seekerOfKnowledge 2014年

1
我刚刚在Google表格中进行了测试,并且功能组合可以完美运行。
太阳

1
这个答案救了我一命!
kRazzy R

1
似乎也可以在LibreOffice Calc中工作。
Dejan

6

其实,你可以用简单的方式做你想做的事 =SUM()

假设您的Excel工作表具有以下设计:

\|  A  |  B  |
-+-----+-----+
1|  1  |     |
2|  2  |     |
3|  3  |     |
4|  4  |     |
5|  5  |     |
6|     |     |
7|  15 |Total|

假设A7=SUM(A1:A5),您可以根据需要添加更多行,因为Excel会相应地扩展=SUM的范围。

现在假设我选择第2、3和4行,然后插入行。结果将如下所示:

 \|  A  |  B  |
--+-----+-----+
 1|  1  |     |
 2|     |     |
 3|     |     |
 4|     |     |
 5|  2  |     |
 6|  3  |     |
 7|  4  |     |
 8|  5  |     |
 9|     |     |
10|  15 |Total|

A10等于=SUM(A1:A8)。这样,您现在可以随意插入新号码。


1
既然您已经说明了,我就知道了这种行为。但是出于某种原因,我认为仅拥有一个始终在当前单元格上方求和的公式将很方便。但是创建简单的求和范围显然比我想出的复杂公式容易。我太聪明了一半。谢谢!(我必须安慰自己,我至少了解过INDIRECT和ADDRESS,而我之前从未使用过。)
Mark Meuer 2013年

2
我已将接受的答案更改为我发布的答案,因为该答案在一年后仍在不断增加,是否完成了我在问题中要求的工作,并且显然可以在Google电子表格中使用,而该答案没有。但是,@ Doktoro,您的回答提供了非常有用的见解,对此我深表感谢。
Mark Meuer

1
有一个缺陷:在末尾插入一行(在空行之前)。至少在LibreOffice中,这将使SUM公式保留其原始范围,即省略新行。我的解决方案:SUM(OFFSET(A$1; 0; 0; ROW(A7)-ROW(A$1); 1))。因为它指向自身而不是上面的一行,所以它将始终正确调整范围。
Tilman Vogel 2015年

@TilmanVogel的回答是!非常感谢
Genarito

5

该答案特定于Libra Office,但也适用于Excel。

基本上,如果我们要明确提及要冻结的行/列,则应在该行/列中提及$。

*还有一个内置算法,当您将公式复制到其他单元格时,Libra Office将自动确定应如何更改公式值。

因此,假设您必须添加所有行G1:GN =>,其中N是当前行号。为此,您要修复第一个值的行,并保留其他值。因此公式为:

= SUM(G $ 1:G1)->第一行,然后可以将公式复制粘贴到其他单元格中。

Libra Office将自动将G1保留为第一个值,并将每个单元格的第二个值动态更改为G2,G3等。


根据Apostolos55的答案> = Sum($ A1:A1)<,它将不起作用,因为仅当公式A复制到同一列中的其他单元格时,列A将被固定,而行仍将变化。因此,应将$附加在Row之前,以在公式中获取正确的值。此外,它没有解释什么可以是其他组合,因此我提供了替代方案。如果必须将单元格保持不变,则必须在行和列上都应用$。
Prateek

3

好的,Indirect()易失性...因此,随着工作表的增大,它只会变慢。如果适合您,则最好使用:

=Sum($A1:A1)

当您向下拖动此公式时,将始终具有从A1到当前(或之前的等)单元格的范围。没有挥发性,非常快,简单得多!


谢谢你的回答。请帮助我理解,您的答案与@Doktoro Reichard的答案有何不同?
Mark Meuer

这是可以沿您的单元格“跟随”的总和,在下一列中说。然后,使用IF只能显示/计算最后的总和。可能不是您要查找的内容,但应该知道。
Apostolos55 2015年

感谢您的信息。没错,它不能解决原始问题(专门在寻找公式求和得出单元格上方的数字)的问题,但在其他情况下可能会有所帮助。
Mark Meuer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.