![对同一列中的某一列求和,不存在循环引用](https://linux22.com/image/1248527/%E5%AF%B9%E5%90%8C%E4%B8%80%E5%88%97%E4%B8%AD%E7%9A%84%E6%9F%90%E4%B8%80%E5%88%97%E6%B1%82%E5%92%8C%EF%BC%8C%E4%B8%8D%E5%AD%98%E5%9C%A8%E5%BE%AA%E7%8E%AF%E5%BC%95%E7%94%A8.png)
在 Excel 中,您可以使用 来对整列求和=SUM(B:B)
。但是,您当然不能在要求和的列中使用该公式,因为这样会造成循环引用。
除了诸如此类的方法之外,还有其他简单的方法可以对当前单元格下方的列中的所有值求和吗=SUM(B2:B65536)
?
作为参考,有人在 ask.metafilter 上提出了同样的问题:http://ask.metafilter.com/65955/ExcelFilter-How-do-I-display-the-sum-within-that-column-without-resulting-in-a-circular-reference-error
该线程中的建议=SUM(B:B-B1)
基本上就是我所寻找的,如果它确实有效就好了!
答案1
在您引用的同一主题中,有一位用户提出了一个 UDF 来解决该问题。SUMRANGEWITHEXCEPTION
在文本中搜索。
您也可以仔细遵循 Excel 2007 帮助:
如果要保留循环引用,可以启用迭代计算,但必须确定公式应重新计算多少次。如果在不更改最大迭代次数或最大变化值的情况下启用迭代计算,Office Excel 将在 100 次迭代后或循环引用中的所有值在迭代之间变化小于 0.001(以先到者为准)后停止计算。但是,您可以控制最大迭代次数和可接受的变化量。
- 单击“Microsoft Office 按钮” ,单击“Excel 选项”,然后单击“公式”类别。
- 在计算选项部分中,选中启用迭代计算复选框。
- 要设置 Office Excel 重新计算的最大次数,请在“最大迭代次数”框中键入迭代次数。迭代次数越多,Excel 计算工作表所需的时间就越长。
- 要设置计算结果之间可接受的最大变化量,请在“最大变化量”框中键入该量。数字越小,结果越准确,Excel 计算工作表所需的时间也越多。
答案2
这将在 B 列的任意单元格中起作用,无需修改:
=SUM(IF(ROW()=1,0,INDIRECT("$B$1:$B$"&ROW()-1,1)),
IF(ROW()=65536,0,INDIRECT("$B$"&ROW()+1&":$B$65536")))
注意:这适用于 2007 之前的 Excel 版本。