Excelの文字列を数値に変換する方法!関数の他VBAも!

Excelの文字列を数値に変換する方法!関数の他VBAも!
Excelで文字列として入力された数字を、数値に変換したいときはないでしょうか。

けど、そんな中で悩むことは、

・文字列のままだとSUMで合計しても0になってしまう
・セルの左肩に緑の三角マークが出ていて直し方がわからない
・1つずつ入力し直すのは件数が多くて手間

ですよね。

今回はそんなお悩みを解決する

・文字列を数値に変換する方法(VALUE関数)
・「1を掛ける」「0を足す」だけで数値にする古典テク
・区切り位置での一括変換やVBAも

についてまとめます!

完成イメージ

システムから取り込んだデータは、数字が文字列として入っていることがあります。
文字列のままだと、合計しようとしても0になり、並べ替えや計算もできません。
今回は
・文字列を数値に変換して、SUMで正しく合計できる状態にする方法
をゴールにします。
左寄せで緑の三角マークが付いていた列が、右寄せの数値に変わります。

なお、関数を使わず「1を掛ける」だけで数値にする古典テクや、区切り位置での一括変換、VBAでの自動化、うまくいかないときの対処法(トラブルシュート)もあわせてご紹介します。
早速実装して試してみましょう!
完成イメージ
上の画像が完成形です。文字列だった数量・単価・金額がすべて数値になり、合計が1,139,800と正しく計算されています。

STEP1. 文字列のままのデータを用意する

まずは、数字が文字列として入っている表を用意します。
今回は商品・数量・単価・金額の4列で、B〜D列がすべて文字列です。
文字列は左寄せで表示され、セルの左肩に緑の三角マークが出ます。
このマークは「数値が文字列として保存されています」という合図です。
見た目は数字でも、Excelの中では文字として扱われている状態です。
文字列として入力された表

下の表をコピーして、Excelのシートに貼り付けるとそのまま試せます。

商品 数量 単価 金額
ノートPC 3 128000 384000
モニター 5 32000 160000
キーボード 12 4800 57600
マウス 20 2200 44000
プリンタ 4 29800 119200
タブレット 5 45000 225000
外付HDD 8 12000 96000
USBメモリ 30 1800 54000

※ 数式で求める列は空にしています。すでに値が入っている列はそのまま残して試せます。

STEP2. 文字列だと計算できないことを確認する

文字列のままでは、合計しようとしても思った結果になりません。
D11セルに =SUM(D2:D9) と入れてみると、結果は0になります。
SUM関数は文字列を無視してしまうためです。
数値かどうかは ISNUMBER関数 でも確認できます。
B2セルを判定すると FALSE(数値ではない)が返ります。
まずはこの状態を直していきましょう。
合計が0になる様子

STEP3. VALUE関数で数値に変換する

文字列を数値にするには VALUE関数 が使えます。
G2セルに =VALUE(B2) と入力します。
VALUEは「文字列を数値に変換する」関数です。
文字列の数字を、計算に使える数値へ変えてくれます。
あとはフィルハンドルで下へコピーすれば、数量がすべて数値になります。
数式なので、もとの文字列を変えれば結果も追従します。
VALUE関数の入力画面

STEP4. VALUEを使わず「1を掛ける」「0を足す」

関数を入力しなくても、計算式にすると数値に変わります。
これは昔から使われている古典テクです。
Excelは計算をするときに、文字列の数字を自動で数値として扱うためです。
H2セルに =B2*1 と入力します。
同じように =B2+0 と足し算にしても数値になります。
G列のVALUEと同じ結果になることを確認してみてください。
関数名を覚えなくてよいので、ちょっとした変換には手軽ですね。
VALUEと演算の結果

STEP5. 区切り位置で一括で数値に変換する

関数を入れる列を増やしたくないときは、区切り位置で元の列をそのまま数値にできます。
変換したい B2:D9 を選び、データ タブ → 区切り位置をクリックします。
ウィザードが開くので、そのまま「次へ」→「次へ」と進みます。
3つ目の画面で「列のデータ形式」をG/標準にして完了を押します。
これだけで、文字列だった数字が一括で数値に変わります。
上の画像は、この操作を行ったあとの状態です。
1列ずつではなく、複数列まとめて変換できるのが便利ですね。
区切り位置で一括変換した結果

STEP6. ISNUMBER関数で数値になったか確認する

変換できたかどうかは、ISNUMBER関数 で確認できます。
F2セルに =ISNUMBER(B2) と入力します。
数値になっていれば TRUE、文字列のままなら FALSE が返ります。
変換後はTRUEに変わり、緑の三角マークも消えているはずです。
目で見て分からないときの確認に役立ちます。
ISNUMBER関数の入力画面

文字列を数値に変換する方法の比較

同じ変換でも、やり方によって向いている場面が違います。

方法 手順 向いている場面
VALUE関数 =VALUE(B2) と入力して下へコピー もとの列を残して別の列に出したいとき
演算(1を掛ける・0を足す) =B2*1 や =B2+0 と入力 関数名を覚えず手軽に済ませたいとき
区切り位置 範囲を選び「データ→区切り位置→完了」 元の列をそのまま一括で数値にしたいとき
VBA Val や .Value = .Value を使う 大量データや定期的な変換を自動化したいとき

VBAでまとめて数値に変換する

件数が多く、毎回同じ変換をするなら、VBAで一括処理するのがもっともラクです。
Alt+F11でVBAエディターを開き、標準モジュールに次のコードを貼り付けます。

Sub ToNumber()
    Dim rng As Range
    For Each rng In Range("B2:D9")
        If IsNumeric(rng.Value) Then
            rng.Value = Val(rng.Value)
        End If
    Next rng
End Sub

実行すると、B2:D9の文字列が一瞬で数値に変わります。
Val は文字列の先頭から数値として読める部分を取り出す関数で、余分な記号があっても数値を取り出せます。
数式ではなく値として書き戻すので、もとの文字列は残りません。

POINT

もとの文字列を残しておきたいなら VALUE関数や演算で別の列に出す、
元の列をそのまま数値にしたいなら 区切り位置、
毎回同じ変換をするなら VBA がおすすめです。
迷ったら、あとから見返しても意味が分かる VALUE関数 が安心ですよ。

タカヒロ

タカヒロ
「.Value = .Value」と書くと、数式を消して値だけに置き換えられます。
今回は文字列を数値にしたいだけなので Val を使っていますが、
数式を値にしたいときは Value = Value と覚えておくと便利です。

うまくいかないときの対処法(トラブルシュート)

実際に試すと、思ったように変換できないこともあるかもしれません。
よくあるつまずきと対処法をまとめました。

症状 原因 対処
VALUEで #VALUE! になる カンマ・円記号・空白が数字に混ざっている SUBSTITUTE で記号を消してからVALUEにする
全角数字が変換できない 全角の「123」は半角と別の文字のためエラーになる 区切り位置で「G/標準」にすると全角も変換できる
先頭の0が消えた 数値にすると「001」の先頭0は意味を持たないため消える 0を残したいなら数値にせず表示形式を文字列にする
一部だけ #VALUE! のまま セルに見えない空白や改行が入っている TRIM や CLEAN で整えてから変換する
変換しても左寄せのまま 表示形式が文字列のままになっている セルの表示形式を標準に戻してから変換する

関数の説明

今回使う2つの関数の概要です。
どちらも文字列と数値の変換・判定でよく使うので、違いを押さえておきましょう。

VALUE関数(バリュー)

書式 =VALUE(文字列)
できること 文字列として入力された数字を、計算できる数値に変換します。
戻り値 数値(変換できないときはエラー値 #VALUE!)
こんなときに 文字列の数字を合計・並べ替え・計算に使いたいとき。
注意 カンマ・円記号・空白・全角数字が入っているとエラーになります。まず SUBSTITUTE で記号を消しましょう。
=VALUE(B2)

ISNUMBER関数(イズナンバー)

書式 =ISNUMBER(テストの対象)
できること 指定した値が数値かどうかを判定します。
戻り値 数値なら TRUE、そうでなければ FALSE
こんなときに 文字列を数値に変換できたか確認したいとき。
注意 「123」のように見えても文字列なら FALSE になります。見た目で判断できないため確認に便利です。
=ISNUMBER(B2)

完成

文字列だった数量・単価・金額が、すべて数値に変わりました。
左寄せだった数字が右寄せになり、緑の三角マークも消えています。
合計欄も 1,139,800 と正しく計算できました。
思ったとおりに変換できましたか?
数値になれば、並べ替えやグラフ作成もスムーズにできるようになります。
数値に変換された完成表

さいごに

いかがでしょうか。

今回は、

・Excelの文字列を数値に変換する方法(VALUE関数・演算・区切り位置・VBA)

についてまとめました。

まずは今回のサンプル表で、ぜひ一度試してみてください。
文字列が数値になれば、合計・並べ替え・グラフ作成もスムーズになります。
また、他にも便利なExcelの時短テクニックがありますので、よろしければご参照頂ければと思います。

ぜひ試してみてください。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。






コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA ImageChange Image