看起来很简单,但我找不到一种方法在Excel公式中定义一个范围,使其覆盖到列的末尾。
比如说,我可以使用这个方程 SUM(C:C) 来求和列C中的所有数字。然而,由于页面顶部有标题和列头,我想从第6行开始我的范围。我以为SUM(C6:C)可以实现,但在Excel中它并不起作用。
这是必要的,这样我的总和就始终正确,无论将来我在文档中添加多少行数据。
谢谢。
看起来很简单,但我找不到一种方法在Excel公式中定义一个范围,使其覆盖到列的末尾。
比如说,我可以使用这个方程 SUM(C:C) 来求和列C中的所有数字。然而,由于页面顶部有标题和列头,我想从第6行开始我的范围。我以为SUM(C6:C)可以实现,但在Excel中它并不起作用。
这是必要的,这样我的总和就始终正确,无论将来我在文档中添加多少行数据。
谢谢。
=Sum(C:C)-Sum(C1:C5)
将所有内容加起来,然后减去不需要的单元格中的值之和,无需使用易挥发函数Offset、Indirect或Array。
如果您不喜欢这种方法,也可以尝试以下方法:
=SUM($C$6:INDEX($C:$C,MATCH(9.99999999999999E+307,$C:$C))
以上公式仅在C6至C:C中找到数字匹配项时进行求和。这也是非挥发性的,但我认为更昂贵和粗糙。无论如何,我添加了它。
如果您想要像CountA函数一样使用文本,在列中使用最后一个文本值,您可以使用以下方法。
=COUNTIF(C6:INDEX($C:$C,MATCH(REPT("Z",255),$C:$C)),"T")
=Sum($C$6:$C$65536)
=CountIF($C$6:$C$65536,"T")
=Sum($C$6:$C$1048576)
=CountIF($C$6:$C$1048576,"T")
这两种方法都适用于Excel 2007及以上版本。
以上所有函数都会忽略最后一个值下面的所有空白值。
=Sum(C:C)-Sum(C1:C5)
会创建一个循环引用,无法正常工作。将此公式放在单元格C6
中,当您想要计算单元格C6
的内容时,它可以正常工作。更改减法部分也是一样的。这个想法不能被使用。 - Chris Rogers你们似乎都喜欢复杂化。只需点击列(选择整个列),按住CTRL并点击要排除的单元格(在你的情况下为C1到C5)。现在你已经选择了整个C列(右侧到工作表末尾)而不包括起始单元格。现在你需要做的是右键单击并为你的选择定义名称(例如asdf)。在公式中使用SUM(asdf)。现在你完成了,祝你好运。
总是找到最简单的方法;)
=Sheet1!$C$6:$C$1048576
。因此,使用了最大行数的常量。 - czerny=SUM(C:C,C1:C5)
。 - Chris Rogers如果您不介意使用OFFSET()函数,它是一种易变的函数,每当单元格更改时都会重新计算,那么这是一个既动态又可重复使用的好解决方案:
=OFFSET($COL:$COL, ROW(), 1, 1048576 - ROW(), 1)
其中$COL是您要操作的列的字母,ROW()是动态选择与包含此公式的单元格相同的行的行函数。您还可以使用静态数字($ROW)替换ROW()函数。
=OFFSET($COL:$COL, $ROW, 1, 1048576 - $ROW, 1)
=OFFSET($COL:$COL, $ROW, 1, maxRows - $ROW, 1)
=SUM(OFFSET(C:C, 6, 1, maxRows - 6, 1))
或者 =SUM(OFFSET(C:C, ROW(), 1, maxRows - ROW(),1))
我用类似这样的方法解决了问题(在Excel 2013中引用第8行到最后一列的C和D列):
=SUMIFS(INDIRECT(ADDRESS(ROW(D$8), COLUMN())&":"&ADDRESS(ROWS($C:$C), COLUMN())),INDIRECT("C$8:C"&ROWS($C:$C)),$C$2)