在excel中设置动态单元格引用

时间:2015-11-13 12:29:09

标签: excel dynamic sum

我有一个计算总计的工作表设置。如果数据已经存在则很容易,但是如果添加新数据则不行。所以我希望能够做的是不为总和公式指定特定的结束单元格,而是在添加更多列时更新它。

如何使用=SUM(m4:m?)

执行此操作

4 个答案:

答案 0 :(得分:1)

假设您需要M4中数据的总计:M10。

要制作开放式范围,您可以将下限设为“太远”:= SUM(M4:M100000)。

或者你可以将其设为= SUM(M:M) - SUM(M1:M3)

但是,当您需要使总值低于值集时,这不适用。在这种情况下,您有两种方式。

使用Excel嵌入式功能

公式看起来像他的:= SUM(M4:M10)。如果在M4和M10之间插入新行(例如,选择第5行,右键单击,插入行),则公式将自动调整为= SUM(M4:M10)。

如果要在第一行(选择第4行,右键单击,插入行)或最后一行(选择第11行,右键单击,插入行)下方插入新值,可能会出现此问题。在这些情况下,总计公式将不会被调整。

可能的解决方法:

  • 对于“第一行以上”问题,我更喜欢在上方创建一些空行并隐藏它。在我们的例子中,我将隐藏第3行并使总计公式看起来像= SUM(M3:M10),因此,当您在第一行上方插入新行时,实际上您在表的中间插入一行,并且总计公式将进行调整。

  • 对于“最后一行” - 在下面留空行;但在这种情况下你无法隐藏它;只是让它变成不同的颜色,并做一些评论,比如“在这条线上插入新的值”。

<强> INDEX()

有趣的技巧是使用INDEX()函数,它返回对数组中单元格的引用。对于我们的情况,数组可以是整个M行,也可以是索引 - 行号。

  • 对于“第一行以上”问题,使总计公式如下= SUM(INDEX(M:M; 4):M10)。因此,计算将始终从第4行开始,即使将添加/删除某些行。

  • “最后一行”。假设您在M13中拥有“总计单元格”,并且您想要在M4和“总计单元格”之间获得所有值的总计。该公式可能看起来像= SUM(M4:INDEX(M:M; ROW(M13))),或者,考虑“第一行以上”情况:= SUM(INDEX(M:M; 4):INDEX(M:M; ROW(M13)))

希望这有帮助

答案 1 :(得分:0)

Sum(m4:m?)暗示您要添加更多行而不是添加列数据。 如果要自动对行数据求和,可以使用以下内容:

=SUM(OFFSET(A1;0;0;COUNT(A:A);1))

然而,这假设数据在每个单元格中是连续的,并且不允许空为0,因为它计数错误。

但是:您还可以为数据范围定义表格。如果您将数据添加到该数据范围内的列/行,它们将自动包含在调整后的公式中 - 确实非常好。

选择您的数据范围,然后选择Insert:Table。这将为您的表提供类似Table1的名称。 您的求和函数现在将调整为类似于: = SUM(表1)

现在,当您添加到范围时,表格会调整大小,并且您的功能正常工作。 使用表的好处在于,如果您在表之后立即向行/列添加数据,则会调整大小并包含该范围。如果没有桌子,这很难做到。您也可以更改表格的格式,或使格式颜色不可见,但您可能最好使用某种格式向用户显示表格的数据区域。

答案 2 :(得分:0)

您可以使用以下公式计算包含数字的最后一行:

=LOOKUP(2,1/ISNUMBER($J:$J),ROW($J:$J))

如果您在范围内有文本或空白,则此公式不会出现问题。

然后,您可以将该公式定义为定义名称

enter image description here

并使用公式:

=SUM(OFFSET(J4,0,0,LastRow-3))

总结范围。请注意末尾的 -3 以补偿第4行中的第一个单元格。

另一种选择是将您的范围设置为固定范围,您可以保证该范围将大于您实际使用的任何范围:

=SUM(J4:J1000)

答案 3 :(得分:0)

您可以使用counta查找最大行数。然后将其推入间接将为您提供所需的范围。

= SUM(间接(&#34; A1:A&#34;&amp; COUNTA(A1:A1000000); TRUE))

假设:

  • 数据位于A栏
  • 数据从第一行开始
  • 没有空白行