以外と知らないエクセルの数値と文字列の関係

エクセルを使っていると、「1/2」と書けば1月2日、「0003」と書けば「3」などと、勝手に変換されてしまいます。

これは、エクセルというソフトが、数字を優先して考え、数字になりそうなものは、すべて数字で処理したいと考えているからです。

ご存知の通り、日付もシリアル値という数字で、1900年1月1日を1として始まる数字になっています。

しかし、このような数字を何とか文字として表示したいという要望があります。このため、エクセルでは、数字を文字列として表示するための方法がいくつか用意されています。

一番簡単な方法が、数字の前に「シングルクォーテーション」を付ける方法です。
たとえば、「’1/2」とか「’0003」とすれば、数字は文字列としてそのまま表示されるようになります。

この「シングルクォーテーション」を付ける方法は、あくまでも裏ワザで、この場合のセルの表示形式は文字列とはならず、「標準」の表示形式のままです。(つまり、数値のまま存在しています)

ところが、1列すべてを文字列として表現したいという場合には、上記の方法では大変です。
そこで、セルの書式設定で、表示形式を「文字列」というように変更する方法があります。

ここで問題となってくるのが、以下の2つの場合です。
(1)すでに数字が入っている状態で、セルの表示形式を文字列にした場合。
(2)何も入力されていない状態で、セルの表示形式を文字列にしてから、数字を入力する場合。

一見すると、(1)も(2)も同じことだろうと考えがちですが、この2つは全く異なった意味になります。

(1)の場合は、最初に数字が入っているために、セルとしては数値のままの意識で存在しています。
(2)の場合は、文字列形式にしてから、数字を入れているので、セルとしては文字列として当然存在しています。

※ただし(1)の場合も、再度数値を入力しなおすと、(2)と同じことになります。

この2つの大きな違いは、SUM関数などで合計を求める場合に、(1)のセルは、合計の中に含まれて計算され、(2)のセルは合計の中に含まれずに計算されます。つまり、(1)のセルは文字列の表示形式になっているにもかかわらず、関数上では、数値として扱われてしまうということです。

また、文字列の表示形式になっている状態でも、内部が数字として表示されている値であれば、加減乗除の単純な計算は普通通りできてしまいます。(関数計算では数字として扱えないのに)

このように、エクセルでは、「数値か文字列か」という問題は、単純ではなく意外と灰色的なものだと考えておいたほうがいいと思います。

 

コメント

Copyright © Nokotech Lab All Right Reserved.