【发布时间】:2014-06-06 18:49:08
【问题描述】:
我的代码设置了很多单元格值。最后,每个单元格中的公式都需要在生成 Excel 文件之前进行评估。对于大多数工作表来说,事情进展顺利。
但是,有一个单元格引发了异常。该单元格正在计算其后面的一系列单元格和其他工作表中的参考单元格的平均值。我猜当第一个单元格试图计算平均值时,后面的单元格还没有被评估。
这是那个单元格上的公式
=IFERROR(AVERAGEIF(D2:AU2,"<>-"),"-")
我怀疑这是因为该范围内的单元格引用了其他工作表中的单元格。例如D2 有以下公式=Common!E2。
所以我决定做的是:
- 将调用封装在
try-catch块中以执行公式。 - 如果执行单元格引发异常,我会保存该单元格的坐标。
- 然后我执行抛出异常的单元格
我注意到同一个单元格不断抛出错误。为了能够退出循环,我数到 3 次迭代。
生成 excel 生成时,该单元格的值为 -。但是,当我选择单元格然后按enter 时,它会执行并显示正确的值。
我推迟执行该单元格的原因是,在第一次迭代之后,引用其他工作表的单元格已经被评估。但是,它仍然无法正常工作,因为它不断抛出异常。
感谢您的帮助。
更新
我正在使用 npoi 和 c#。
【问题讨论】:
-
也许...
application.Calculate打开工作簿。或在保存之前生成之后。 -
@xQbert 我不知道 application.Calculate 是否是 npoi 的一部分。我现在正在检查。