(Excel)文字列を数値に変換する方法

 Excelで、セルに文字列として記録されている数字(数値とみなせるもの)を数値に変換する方法について、関数によるものとメニュー操作によるものを紹介します。
 「IF/IFERROR関数等で変換する方法」及び「メニュー操作による方法」では、数字でない文字列のセルが混在するケースにも対応できます。

VALUE関数を使う方法

 次の画像のB列の値は「文字列として入力されている数字」です(キー操作で「'123」のように入力して確定したもの)。
 そこでC3セルに数式を入力してC8セルまでフィルコピーし、B列の文字列を数値に変換した結果を得ています。

 C3セル(下方にフィルコピー)

=VALUE(B3)

 VALUE関数は「数値を表す文字列を数値に変換する」という、まさにこのための関数です。
 画像でわかるようにカンマ入りの数字や全角数字も数値に変換されます。カンマは消えますが、必要であればセルの書式(表示形式)の設定で表示させることとなります。
 また、実例は省略しましたが「00123」のように先頭にゼロがある文字列の場合、その先頭の0が消えます。これは以降の例でも同様です。



 ただし注意すべき点があります。
 次の画像は上記の例に3つの値(B9~B11)を加えたものですが、数字でない文字列はエラーとなり、空文字列(「=""」のような長さ0の文字列)や空白セルは0に変換されてしまいます。

 特に0になってしまうケースが要注意で、変換した結果を集計する場合などに、意図しない結果になる恐れがあります。
 数字でない値がエラーや「0」になるのを避けたい場合は、以下の「IF/IFERROR関数等で変換する方法」を試してみてください

「*1」を加える方法

 変換の内容は上記例(2つ目の画像)と同じです。
 ここでもC3セルに数式を入力してC8セルまでフィルコピーし、B列の文字列を数値に変換した結果を得ています。

 C3セル(下方にフィルコピー)

=B3*1

 単純に参照して「*1」を加えただけ、という簡単な式です。
 これでもVALUE関数と同じ結果が得られます。この「*1」ですが、意図が分かりにくくなる恐れはあるものの、数式が長くなってしまう場合などに多用されます。
 なお、数字でない文字列がエラーになるなどの点もVALUE関数と同じですので注意してください。

IF/IFERROR関数等で変換する方法(数字でない文字列が混在する場合)

 これも変換の内容は上記例と同じです。
 しかしここでは少し数式を工夫し、数字でないものがエラーや0にならないようにしています(ただし正確には空白セルが空文字列(="")に変換されます)。

 C3セル(下方にフィルコピー)

=IF(B3="","",IFERROR(VALUE(B3),B3))

 この数式は次のように機能します。

  • まずIF関数でセルが空("")だったらそのまま("")にする
  • 空でない場合はVALUE関数を使い数値に変換する。ただしIFERROR関数によりVALUE関数の結果がエラーなら(つまり元の値が1文字以上の文字列なら)元の値(B3)をそのまま表示する

 IFERROR関数の動作が独特で慣れないと混乱することもありますが、長くなりがちな記述も簡潔にできるので覚えておいて損のない関数です。

メニュー操作による方法

 手動操作で変換する方法です。
 まずは数字の文字列が記録されている範囲を選択します。

 


 そして最も上(左上)のセルに表示される黄色い三角のアイコンをクリックし、メニューから「数値に変換する」を選択します。

 


 これで文字列が数値に変換されます。
 なお、選択した範囲内に数字でない文字列が含まれている場合でも、それらは影響を受けません。