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)
将其放在电子表格中的任何单元格中,它将生成该单元格上方列中所有数字的总和。
小智 13
此答案特定于 Libra Office,但也适用于 Excel。
基本上,如果我们想明确提及要冻结的行/列,我们应该在该行/列中提及 $。
*还有一个内置算法,当您将公式复制到其他单元格时,Libra Office 将自动确定应如何更改公式值。
因此,假设您必须添加所有行 G1:GN => 其中 N 是当前行号。为此,您要修复第一个值的行并将其他值保留为。所以公式将是:
=SUM(G$1:G1) -> 对于第一行,然后您可以将公式复制粘贴到其他单元格。
Libra Office 会自动将 G1 保留为第一个值,并为每个单元格动态地将第二个值更改为 G2、G3 等。
其实,你可以用普通的来做你想做的 =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). 因此,您现在可以随意插入新数字。
好的,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 ---- 如果您不小心写了循环公式,您将不会收到通知:((