Answers:
函数ROW()
和COLUMN()
将给出当前单元格的行和列。在ADDRESS()
函数中使用它们可以创建一个字符串,该字符串表示从当前列的顶部到总数上方的行的范围。然后使用该INDIRECT()
函数将该字符串转换为实际范围以提供给该SUM()
函数。总单元格的公式将为:
=SUM(INDIRECT(ADDRESS(1,COLUMN())&":"&ADDRESS(ROW()-1,COLUMN())))
将其放在电子表格的任何单元格中,它将产生该单元格上方列中所有数字的总和。
其实,你可以用简单的方式做你想做的事 =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)
。这样,您现在可以随意插入新号码。
SUM(OFFSET(A$1; 0; 0; ROW(A7)-ROW(A$1); 1))
。因为它指向自身而不是上面的一行,所以它将始终正确调整范围。
该答案特定于Libra Office,但也适用于Excel。
基本上,如果我们要明确提及要冻结的行/列,则应在该行/列中提及$。
*还有一个内置算法,当您将公式复制到其他单元格时,Libra Office将自动确定应如何更改公式值。
因此,假设您必须添加所有行G1:GN =>,其中N是当前行号。为此,您要修复第一个值的行,并保留其他值。因此公式为:
= SUM(G $ 1:G1)->第一行,然后可以将公式复制粘贴到其他单元格中。
Libra Office将自动将G1保留为第一个值,并将每个单元格的第二个值动态更改为G2,G3等。
好的,Indirect()易失性...因此,随着工作表的增大,它只会变慢。如果适合您,则最好使用:
=Sum($A1:A1)
当您向下拖动此公式时,将始终具有从A1到当前(或之前的等)单元格的范围。没有挥发性,非常快,简单得多!