【发布时间】:2016-02-15 00:52:10
【问题描述】:
我有一个计算总数的工作表设置。如果数据已经存在,但如果添加新数据则很容易。所以我想做的是不为求和公式指定一个特定的结束单元格,而是让它随着更多列的添加而更新。
我如何使用=SUM(m4:m?) 做到这一点
【问题讨论】:
-
删除
?就可以了
我有一个计算总数的工作表设置。如果数据已经存在,但如果添加新数据则很容易。所以我想做的是不为求和公式指定一个特定的结束单元格,而是让它随着更多列的添加而更新。
我如何使用=SUM(m4:m?) 做到这一点
【问题讨论】:
? 就可以了
假设您需要对 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;行(M13)))
希望对你有帮助
【讨论】:
Sum(m4:m?) 暗示您希望添加更多行而不是添加列数据。 如果你想自动总结一行数据,你可以使用类似的东西:
=SUM(OFFSET(A1;0;0;COUNT(A:A);1))
但是,这假设每个单元格中的数据是连续的,并且由于计数错误,因此也不允许为 0 为空。
但是:您也可以为数据范围定义一个表格。如果您将数据添加到该数据范围内的列/行,它们将自动包含在调整后的公式中 - 确实非常好。
选择您的数据范围,然后选择插入:表格。这将为您的表命名,如 Table1。 您的 sum 函数现在将被调整为如下所示: =SUM(表1)
现在,当您添加到范围时,表格会调整大小,您的函数就可以正常工作了。 使用表格的好处在于,如果您在表格之后立即将数据添加到行/列,它会调整大小并包含该范围。没有桌子很难做到这一点。您还可以更改表格的格式,或使格式颜色不可见,但您最好使用某种格式向用户显示表格的数据区域。
【讨论】:
您可以使用计数来查找最大行数。然后将其推入间接范围将为您提供所需的范围。
=SUM(INDIRECT("A1:A" & COUNTA(A1:A1000000);TRUE))
假设:
【讨论】: