2007年12月14日金曜日

Excelにおける再計算

会社でWebからExcel帳票にデータを直接出力して、ダウンロードできるWebアプリケーションを作りました。
そこで、Excelのデータが再計算されないという不具合が発生したので備忘録をとっておきます。

例えば、B1セルに計算式を埋め込ませておいた帳票のA1セルに数値を出力します。
具体的にはこんな感じ。
A1:2000 (Webより出力)
B1:=A1/50 (帳票に埋め込んでおく)
A1セルにデータを出力した帳票を開くと、B1セルに計算結果「40」が表示されると考えていました。
しかし、いざファイルを開いてみると計算されずに、B1セルに「#VALUE!」と表示されてしまいます。
一度、B1セルを編集状態にすると再計算がされるのですが、それでは納得いきません。

ここで、解決策として浮かんだのは以下の3案。
・帳票出力時に計算されたデータを出力するロジックに変更する。
 → 汎用性かけるロジックとなる。
・帳票自体にファイルオープン時に再計算を実行するコードを書き込む。
 → 帳票オープン時に警告メッセージが表示されてしまう。
・B1セルの計算式になにかしらの修正を加える。

上の2点は右矢印で書かれた欠点があるので3点目の案で考えてみると、意外に早く解決策が分かりました。
以下のように変更すると再計算が実行されます。

B1:=A1/50+NOW()*0

要はファイルオープン時に現在時刻を取得し、取得した時刻に0をかけたもの、つまり0を足すということ。
確かにこれなら強制的に再計算されます。
同じような現象が起きている人は試してみてください。
http://support.microsoft.com/kb/144508/ja

2 件のコメント:

匿名 さんのコメント...

グロさんレベルアップ感出てますね!
ハイパーレベルになったら、ウチの会社のプログラムもハイパーグレードアップしてくださいね!!

Unknown さんのコメント...

まじで、レベルアップ感でてる?
エクセルは毎日のように使うからね~。

じゃ、ケンジの会社の受注目指してがんばるわ~!