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

Mar*_*uer 45 worksheet-function microsoft-excel

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

Numbers
 1
 2
 5
10

18        Total
Run Code Online (Sandbox Code Playgroud)

如果我稍后在列表中间插入 10 个新数字,我希望总和自动包含它们。

我知道该SUM()函数可以对整列求和,但是如果总数也在该列中,那么它会抱怨循环引用。我怎样才能对总数以上的数字求和?

Mar*_*uer 76

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

=SUM(INDIRECT(ADDRESS(1,COLUMN())&":"&ADDRESS(ROW()-1,COLUMN())))
Run Code Online (Sandbox Code Playgroud)

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

  • 这个答案救了我的命! (3认同)
  • +1 次百万。这适用于 Google Sheets,其中 sum 函数的范围 -DON'T- 会自动更新。非常感谢。 (2认同)
  • 我刚刚在 [Google Sheets](https://docs.google.com/spreadsheets/d/1-5Tfg56G4kUOKM4LTUUr2JbfXCESEXBFmH7S-AyPidc/edit?usp=sharing) 中进行了测试,功能组合完美运行。 (2认同)

小智 13

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

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

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

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

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

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


Dok*_*ard 8

其实,你可以用普通的来做你想做的 =SUM()

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

\|  A  |  B  |
-+-----+-----+
1|  1  |     |
2|  2  |     |
3|  3  |     |
4|  4  |     |
5|  5  |     |
6|     |     |
7|  15 |Total|
Run Code Online (Sandbox Code Playgroud)

假设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|
Run Code Online (Sandbox Code Playgroud)

A10等于=SUM(A1:A8). 因此,您现在可以随意插入新数字。

  • 我已将接受的答案更改为我发布的答案,因为该答案在一年多后不断获得投票,完成我在问题中提出的工作,并且显然适用于该答案不适用的 Google 电子表格。但是,@Doktoro,您的回答提供了非常有用的见解,我对此表示感谢。 (3认同)

Apo*_*s55 5

好的,Indirect() 是不稳定的......所以当你的工作表变大时,它只会变慢。如果它适合你,你最好使用:

=Sum($A1:A1)
Run Code Online (Sandbox Code Playgroud)

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

7 年后编辑添加一小部分以确保非正统的完整性而不是 100% 的答案!使用循环引用!因此,您在 C6 处将 C1 添加到 C5,然后只需在c6 = sum(c$1:c6)-c6 按下回车键时写入选择确定(在循环引用的警告处)转到文件/选项/公式/计算选项检查 [迭代计算] 设置 [最大迭代次数] = 1 现在您是完毕!

++ 如果无论如何都跟着你... ++ 你可以使用循环公式!:D:D ---- 如果您不小心写了循环公式,您将不会收到通知:((