現場で実際に起きた事故


この実験の結果が示している危険にお気付きでしょうか?この実験、ビジネスの現場で実際に目撃した事故をもとに考えたものです。

その事故とは、数千行からなる比較的大きな表で起きていました。ある列には数値が入力されていて、その列内の最大値をMAX関数で表示させていました。しかし、その最大値が明らかに小さすぎるのです。入力されていた数値データはすべて左詰めになっていて、調べてみたら、セルの表示形式が「文字列」になっています。

試しにその列をコピーして、別シートに値のみ貼り付けてMAX関数を入力。案の定、全く違う最大値が表示されました。

聞いてみたら、これまで、MAX関数で表示される最大値を疑うことなく運用していたとのこと。上記の実験でセルに表示された緑色の三角形に気付かなかったのかな?と考える方もいらっしゃるかもしれませんが、この機能はExcel2002以降のもの。この現場ではExcel2000を使っていたため、画面上では何事もない状況だったのです。

このときは、これから紹介する処置により事なきを得ましたが、データの内容によっては、大変な問題にもなりかねません。この実験では何が起きていたのでしょうか?

問題は「数値文字列」


先ほどの実験に話を戻しましょう。まず、数値データを入力したあと、セルの表示形式を「文字列」に変更しました。実は、このとき、入力した数値データは「数値文字列」と呼ばれる形式に変更されています。



数値文字列とは「表示形式が文字列に設定された数値」のことです。「表示形式」が文字列になっただけで「実態」は数値。だから表面上は文字列でもMAX関数が使えたのです。

ところが、この数値文字列。次のようにセルを操作した時点で「数値文字列」から「文字列」に勝手に変更されてしまいます。
●セルの内容を変更したとき
●セルをダブルクリックしてからEnterキーを押したとき
●F2キーを押してからEnterキーを押したとき

つまり、表示形式を文字列に変更したら、聞いたこともない「数値文字列」という形式になっていて、操作したセルの値が勝手に「文字列」に変わっていた、というわけです。


そして、MAX関数は数値を対象にして最大値を求めます。したがって、文字列に変更されてしまったデータはMAX関数に関知されなくなります。