MS Excelの驚異の仕様 〜 本当の隠しセル 〜
みんな大好きセルの結合
MicrosoftのExcelでセルを整えるためなどに使われる「セルの結合」機能は、複数のセルを結合し水平方向に中央揃えされ、その際被結合セルに記述されている内容は、一番左上にあるセルの内容だけを維持してそれ以外は削除される(空セルになる)。
当然だが、結合済みのセル群のうち一番左上(下画像内のC3)の部分だけに値が入っており、それ以外のセルは空白セル(=ISBLANK()がTRUE)となり、存在しないはずのセルを参照して計算すると、普通に空白セルを参照した時と同じような結果になる。
昨今、セルの結合アンチの人が増えてきたが、エクセルは書式を美しく整えるためだと考えている人も多いとおもうので、セルの結合という文化は無くならないと考えている。
隠しセルが存在する状態
ここで今回発見したこととして、実はこのルールが通用しない場合がある。
自動生成されたExcelファイルなどで散見され、下画像のようにセルの結合がされた状態なのに、被結合セルの内容が残っている状態がありうる。この”見かけ上存在しないが内容のあるセル”をここでは隠しセルと呼ぶ。普通に起きることはほとんどないが、驚異の現象である。
この隠しセルはご覧の通り正しく番地を手入力で参照すれば中身が参照できるため、存在しない前提で関数を組んでいると想定外の挙動を引き起こす。(実際業務で出会って困った)
どのようにして隠しセルが生まれるのか
下記のブログくらいしか情報がなかったが、
【Excel】結合対象のセルの値を保持する方法 - 株式会社ティーディエス
当該セル群を直接「セルの結合」するのではなく、すでに結合済みのセルから”書式のコピー/貼り付け”をすることで実現できる。
確かにエクセルの書式のコピー/貼り付け 機能は複数のセルの書式をまとめて貼り付けることができるので、セルの結合をコピペすることはあるかもしれないが、ここで消えた(と思っている)セル C5:C8 のデータの存在を忘れたまま、大事なエクセルファイルに謎のデータを放置してしまうおそれがあると考えると、どこかで踏みそうなバグ(仕様)であり、知識として非常に重要なものである。
こんなエクセルファイルがあっても
実は次のようなデータが隠れているかもしれない
自分が遭遇した隠しセルまみれのエクセルファイルは、推測するに、セルの結合を自動ツールなどで実現する際に内部的には書式のコピーで実現しているのだろう。(スポーツ結果の入力ツールなど)
多くの人類が使用するMS Officeソフトの謎仕様を解明できるのは非常に興奮する。セルの結合周りは他にも色々研究の余地がありそう。夏休みの宿題などによさそう。
なお、今回の事象はGoogleスプレッドシートでは起きない(同じ方法を試しても空のセルになる)。