Excel が値を正しく再計算しない

Excel が値を正しく再計算しない

値が入った Excel シートがあります (このシートはカスタム Perl スクリプトによって生成されていますが、問題はそこにあるとは思いません)。その中に、次の数式があります:

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

この数式の目的はSUM()、現在の列の6行目から17行目までのセルの値を取得することです。Gnumeric スプレッドシートファイルを開いたらすぐに動作します。しかしExcel(2003と2008の両方)ではそして2007 以降では、ファイルを開くと、#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 スクリプトで手動更新モードを設定することも可能です。

関連情報