对同一列中的某一列求和,不存在循环引用

对同一列中的某一列求和,不存在循环引用

在 Excel 中,您可以使用 来对整列求和=SUM(B:B)。但是,您当然不能在要求和的列中使用该公式,因为这样会造成循环引用。

除了诸如此类的方法之外,还有其他简单的方法可以对当前单元格下方的列中的所有值求和吗=SUM(B2:B65536)

作为参考,有人在 ask.metafilter 上提出了同样的问题:http://ask.metafilter.com/65955/ExcelFilter-How-do-I-display-the-sum-within-that-c​​olumn-without-resulting-in-a-circular-reference-error

该线程中的建议=SUM(B:B-B1)基本上就是我所寻找的,如果它确实有效就好了!

答案1

在您引用的同一主题中,有一位用户提出了一个 UDF 来解决该问题。SUMRANGEWITHEXCEPTION在文本中搜索。

您也可以仔细遵循 Excel 2007 帮助:

如果要保留循环引用,可以启用迭代计算,但必须确定公式应重新计算多少次。如果在不更改最大迭代次数或最大变化值的情况下启用迭代计算,Office Excel 将在 100 次迭代后或循环引用中的所有值在迭代之间变化小于 0.001(以先到者为准)后停止计算。但是,您可以控制最大迭代次数和可接受的变化量。

  1. 单击“Microsoft Office 按钮” ,单击“Excel 选项”,然后单击“公式”类别。
  2. 在计算选项部分中,选中启用迭代计算复选框。
  3. 要设置 Office Excel 重新计算的最大次数,请在“最大迭代次数”框中键入迭代次数。迭代次数越多,Excel 计算工作表所需的时间就越长。
  4. 要设置计算结果之间可接受的最大变化量,请在“最大变化量”框中键入该量。数字越小,结果越准确,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 版本。

相关内容