在Excel中设置dynamic单元格引用

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

我怎样才能做到这一点=SUM(m4:m?)

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

为了做出开放式的范围,你可以使下限“太远”:= SUM(M4:M100000)。

或者,你可以使它= SUM(M:M) – SUM(M1:M3)

但是,当你需要总值低于一组值时,这是不适用的。 在这种情况下,你有两种方法。

使用Excelembedded式function

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

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

可能的解决方法:

  • 对于“上面的第一行”问题,我宁愿在上面做一些空行并隐藏它。 在我们的情况下,我会隐藏第3行,并使总计公式看起来像= SUM(M3:M10),所以,当您在第一行上面插入一个新行时,实际上您插入一行到表的中间,总计公式将会调整。

  • 对于“最后一行” – 在下面留下空行; 但在这种情况下,你不能隐藏它; 只要把它做成不同的颜色,写一些像“在这条线上面插入新的价值”的话。

指数()

有趣的技巧是使用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)))

希望这可以帮助

Sum(m4:m?)暗示你正在寻找添加更多的行,而不是添加列数据。 如果你想自动求和一行数据,你可以使用如下的东西:

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

但是,这假定数据在每个单元格中是连续的,而且容器的容量也不允许为0,因为计数是错误的。

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

select您的数据范围,然后select插入:表。 这将使您的表名称像Table1。 现在将您的总和函数调整为如下所示:= SUM(Table1)

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

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

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

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

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

在这里输入图像说明

并使用公式:

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

总结范围。 注意最后的-3来补偿第4行中的第一个单元。

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

 =SUM(J4:J1000) 

您可以使用计数来查找最大行数。 然后将其推入间接将给你你需要的范围。

= SUM(INDIRECT(“A1:A”&COUNTA(A1:A1000000); TRUE))

假设:

  • 数据在A列
  • 数据从第一行开始
  • 没有空白行