依頼編
会社の後輩Mからの依頼。
二つのExcelファイル。
セルに入っている数式は同じ。しかし一方は0(ゼロ)が表示され、他方はゼロが表示されてない、空白セルになっている。
見栄えの問題から、ゼロを消したいのだという。
単純に 「表示形式」が不一致 なのだろう……と思って確認して仰天した。表示形式はどちらも「標準」 になっている。
なん……だと?
試しに 「書式をコピー」で書式をそろえてみた が、やはり、一方はゼロが表示され、他方はゼロが表示されない。
なぜ?
調査編
試しに、数式を取り出してみることにした。 フクザツな(入れ子になっている)数式はどこでエラーが起きているのかわかりづらい 。シンプルにしてみるに限る。
VLOOKUP関数だけを取り出してセルに入力し直してみた ところ、 唐突にファイルオープンダイアログが開いた 。
一瞬、何が起きたのかわからず、反射的にダイアログを閉じようとした。その手がふと止まる。
……そうか、そうだったのか!
謎はすべて解けた!
解決編
よくよく見ると、VLOOKUP関数の中の「範囲」に特殊な指定の仕方をしている。シート名によく似ているので見落としていたのだ。これはシート参照じゃない…… 名前参照 だ!
「数式」タブの「名前の管理」 をクリック
すると、名前の一覧が表示される。
あった。 外部ファイルを参照している名前 が確かにある。 隣のシートへの参照を上書きしてしまっている 状態だ。だから数式を書き換えた時に、外部ファイルを開こうとしたのだ。
つまり、これはもともと隣のシートを参照していたのだが、Excelファイルを複製したりしている間に不整合が起き、コピー元ファイルへの外部参照になってしまっていた。数式を解決する時に外部ファイルを参照しようとするのだがそのファイルは失われて開けない。数式の内容は反映されず、「0ゼロ」が表示されてしまっていた。
「外部ファイルへの参照」を削除 すると、 元々あった「隣のシートへの参照」 が息を吹き返した。数式が正しく隣のシートを参照し、ゼロが消える。
解決!
教訓
- 「名前の参照」は、しばしばエラーの元(便利だけど)。「数式」タブの「名前の管理」で確認。
- 何か操作した時に「ファイルオープンダイアログ」が開いたら「外部ファイルへの参照」を疑う。「データ」タブの「リンクの編集」で確認できる。
[EOF]