エクセルでファイルを開き、どこかのセルを変更する。そのファイルを保存しないまま閉じようとすると、「変更を保存しますか?」というダイアログが開く。これは、多くのソフトに搭載されている“気配り機能”の一つ。せっかく新しいデータを入力したのに、保存せずに閉じると、新しいデータが消えてしまう。そんなミスを防ぐために、変更が加えられたファイルを閉じる前には、保存するかどうかを確認してくれるのだ。

 ところが稀に、ファイルを閲覧しただけなのに、「変更を保存しますか?」と尋ねられることがある。「何も変更していないけど…」と困惑した経験のある人は、意外と多いに違いない。これは一体どうしたことだろう。エクセルが勘違いしているのだろうか。それとも、誰かがパソコンに不正にアクセスし、ファイルを改ざんしているのだろうか。

犯人はシートの中に……勝手に「再計算」する関数が

 実は、ユーザーがセルのデータを変更していなくても、エクセル自身が内部的にデータを更新しているケースがある。それは、“ある特定の関数”を使った式が、シート内に存在する場合だ。

 最もわかりやすいのは、現在の時刻を表示するNOW関数や、今日の日付を表示するTODAY関数。これらの関数は、ファイルを開いたとき、その時点の時刻や日付を表示するために、自動で「再計算」される。一度でも再計算が行われると、エクセルは「シート内の値が、新しい計算結果に更新された」と判断する。そこで、シートにまったく手を触れていなくても、「変更を保存しますか?」というメッセージを開くわけだ。


 乱数を発生させるRAND関数も同様だ。RAND関数は、シートが再計算されるたびに、0以上1未満の値を無作為に表示する。この関数も、ファイルを開いたとき必ず再計算され、別の値に更新される。そのためファイルを閉じるときに、必ず「変更を保存しますか?」と尋ねられる。

[見た目がまったく変わっていないに…:次のページへ]