Excel 无法正确重新计算值

Excel 无法正确重新计算值

我有一张包含值的 Excel 工作表(此工作表由自定义 perl 脚本生成,但我不认为问题出在这里)。其中,我有一个公式:

=sum(indirect(concatenate(address(6,column()),":",address(17,column()))))

此公式的目的是给出SUM()当前列中第 6 行到第 17 行之间的单元格的值。Gnumeric 电子表格,只要我打开文件,就可以正常工作。但在 Excel 中(20032007),打开文件时出现#VALUE!此公式的字段错误,提示INDIRECT使用这些值进行调用$B$6:$B$17将导致错误。

这是问题的关键。如果我编辑该字段(通过F2),并制作更改,然后按 Enter 键,值就会更新。此外,如果我将文件保存为 .xlsx(Excel 2007 格式),值在打开时似乎会更新。不幸的是,我不确定是否xlsx可以用我使用的模块创建一个,而且我们的许多客户可能无论如何都无法使用它。

有什么建议吗?每月为每个客户编辑 200 多个文件是不可行的,所以如果我遗漏了什么,请告诉我。

答案1

如果插入一个原始的 Sum 函数,它是否可以工作 - 即问题是否可以追溯到间接/地址组合的组件?

您是否尝试过使用 OFFSET 来创建要求和的范围?例如:

=SUM(OFFSET(B6,0,0,12,1))

答案2

可能是在找救命稻草,但你可以尝试 R1C1 样式参考

=SUM(INDIRECT("R["&7-ROW()&"]C:R["&17-ROW()&"]C",FALSE))

或者如果公式始终位于第 19 行,则将引用样式设置为 R1C1

Application.ReferenceStyle = xlR1C1

然后你可以插入公式

=SUM(R[-13]C:R[-2]C)

更新:

您可以使用以下方式避免设置 ReferenceStyle

<YourCellReference>.FormulaR1C1 = "=SUM(R[-13]C:R[-2]C)"

答案3

也许您可以使用以下命令强制重新计算整个电子表格:

http://msdn.microsoft.com/en-us/library/bb687891.aspx

宏重命名然后再次重命名电子表格应该可以正常工作。也许您可以在 PearlScript 的末尾执行?抱歉,我对 Pearl 了解不多。

或者使用热键 CTRL+ALT+F9,如果有效,请使用带有此功能的 VBA:应用程序.CalculateFull

答案4

在 Excel 中,Tools | Calculations您可以设置计算模式。如果设置为“自动”,Excel 应自动更新所有字段的公式结果,打开文件时也是如此。

计算设置也可以针对每个单独的工作表进行设置,因此 Perl 脚本可能设置了手动更新模式。

相关内容