エクセルのセルの書式を文字列から数値に一括変換する方法

エクセルで少々厄介と感じることの1つが数値の扱いについてです。

数値の扱いとはどういうことかというと、次のようなものです。

エクセルにおける数値と文字列の違い

A列・B列共に数字を入れていますが、

A列:数値

B列:文字列

として扱われています。B列を見ると、

  • 先頭が0埋め2桁数字となっている
  • セル内の値が左寄せとなっている

となっていますので、この2点からも文字列扱いということが分かります。

これの何が問題かというと、文字列としての数値は数式が使えないということです。

例えば先述の例で、12行目のA列・B列のセルにそれぞれ「=SUM(A2:A11)」「=SUM(B2:B11)」という計算式を設定した場合、次のようになります。

文字列の数字に対してSUM関数が使えない

数字が文字列のセルに対しては四則演算(+ー÷×やSUM関数)がうまく働かず0になる

という現象が発生します。

文字列としての数字なので当然と言えば当然なのですが・・・数式を入れたセルにエラーと表示されるわけでもないため、正しい結果が出ているかは値を見ないと判断ができません。

つまり、数式を入れていてその数式が正しいとしても計算結果が正しくないという現象が起こりうるということです。

数式が正しいならこの辺をうまくエクセルで吸収して正しく計算してほしいところですが、実際にはなっていない。しかも気づきにくい。

ちょっと困りますよね。

そこで今回は、セルの値が文字列として認識されている数値について、数値として計算できるように書式を一括変換する方法をご紹介します。

方法としては2つほどありますが、1つはあまり知っている方も少ないかもしれませんので、覚えておいて損はないかと思います。

セルの書式設定の変更からではまとめて変更できない

まずこの現象が発生した際に考えられるのが

次のB列が文字列になっているんだから、対象のセルの書式設定をまとめて数値に変えればいいじゃないか

という方法です。

私もこの方法を思いつき、次の手順でやってみましたが、結果は想定しているようにはなりません。

セルの書式設定をまとめて変更してみた手順
  1. 対象のセルを範囲選択する
  2. 右クリックしてセルの書式設定を選択する
  3. 書式を文字列から標準(または数値)に変更してOKをクリックする

先述の例で試した場合はこうなります。

まず、B列の対象セルを範囲選択して、右クリック→セルの書式設定を選択します。

文字列のセルを範囲選択&セルの書式設定

表示形式タブの中の分類を、文字列→標準(または数値)に変えて、OKボタンをクリックします。

結果どうなるか・・・変わりません・・・

セルの書式設定を数値に変換した後の状態

B12セルが0から55に変わる想定をしていましたが、思ったようにはなりませんでした。

理由は不明なのですが、セルの書式設定を変換後は、対象のセルをダブルクリックしてカーソルを外す、ということを行わないと、設定した書式に変わってくれません。

例えばB2セルに対してダブルクリック&カーソルを外すという操作を行った場合は次のようになり、B2セルは数値の1として認識され、B12セルは合計値が1となります。

ダブルクリック&カーソルを外すという操作後

ダブルクリック&カーソルを外すという操作をやればいいのか、ということでB2からB11セルまで同じ操作をすればB12セルは想定通りの55という結果を出してくれるのですが・・・

そんなことを1セルずつなんてやってられません。

対象のセルが多い場合、こんなことをやるのは時間の無駄ですし、やり切れません。

ではどうすればよいかというと、方法としては2つあります。

セルの書式を文字列から数字への一括変換方法

セルの書式を文字列→数値に変換する方法は次の2つです。

文字列数値を数値として認識させる方法
  • 数式で数値に変える
  • コピペで数値に変える

数式で文字列数値を数値に変える方法

1つ目の方法は、数式を使う方法です。

これはとても単純なのですが、「=対象のセル+0」という数式を別列に定義してあげればよいだけです。

以下は、B列の文字列数字を数値に変換する数式を、C列にを定義した例です。

文字列数値を数値として変換する方法1

例えばC2セルの数式は「=B2+0」となっています。

C2からC11までを同じ計算式にした結果、C12の合計値は想定通り55となっているのが確認できるかと思います。

コピペで文字列数値を数値に変える方法

先述の数式を使う方法は手っ取り早いので便利ではあるのですが、変換対象の列の数が多い場合、その分計算式用の列を定義する必要があるため手間がかかる可能性が出てきます。合わせて元の表のデータに変換用の列が追加されるので、その分見づらくなってしまう可能性もあります。

この悩みを解消するのが、2つ目のコピペ&一括変換を使うという方法です。

まず、文字列となっている数値セルを範囲選択し、Ctrl+Cでコピーします。

対象セルをコピーした状態

次に、そのまま右クリックして「値として貼り付け」を行います。

張り付け直後

すると、張り付けたセルの左上のほうに「!」のアイコンが出てきますので、ここをクリックします。

ダイアログが表示されますので、この中の「数値に変換する」を選択します。

数値に変換するを選択

変換後は次のように先頭の0が無くなった形で表示されるようになります。C12セルの値に55と表示されていますので、C2~C11セルの値が数値として認識されていることが確認できます。

数値変換後

コピペ&数値変換の方法は以上です。

ポイントはコピペ後に値として貼り付けを行うということです。値として貼り付けを行わずにそのままCtrl+Vで張り付けてしまうと、!のアイコンが出てこない場合もあるため注意しましょう。

数値への変換についてはどちらかというと2つ目のコピペのほうが操作は簡単ではないかと思います。しかし、コピペ前の値が数式となっている場合は数式が無くなってしまいます。そのため、どちらの方法が良いかは元のセルに数式を使っているのか・消えても問題が無いのかを元に判断をすればよいかと思います。

補足1

コピペによる数値変換は、複数列でも可能です。

変換前
変換後

補足2

実際に行ってもらうと分かるのですが、コピペによる数値への変換の場合、対象セル1つ1つに対して数値変換する処理が動きます。

そのため、変換対象のセルが多い場合は変換終了まで時間がかかってしまいます

場合によっては対象が多すぎてエクセルが固まってしまう可能性もあるため、この方法を試す前にはファイルをバックアップしておきましょう。

まとめ

文字列数値のセルの書式を数値に一括変換する方法についてご紹介しました。

個人的に覚えてほしい方法は2つ目にご紹介した、コピー&値として貼り付け&まとめて数値へ変換 という方法です。

セルを範囲選択&セルの書式設定&書式を変える では文字列→数値には変わりませんので、是非この方法をマスターし、実際に使ってみてください。


Twitterでフォローしよう

おすすめの記事