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

巨集重命名,然後再次重命名電子表格應該可以正常工作。也許你可以在珍珠腳本的末尾執行?我對珍珠實在是不太了解,抱歉。

或使用熱鍵 CTRL+ALT+F9,如果有效,請使用具有此功能的 VBA:應用程式.CalculateFull

答案4

在 Excel 下Tools | Calculations您可以設定計算模式。如果設定為“自動”,Excel 應自動更新所有欄位的公式結果,開啟檔案時也是如此。

計算設定也可以針對每個單獨的工作表進行設置,因此 Perl 腳本可能會設定手動更新模式。

相關內容