Excelで文字列を数値に変換する方法|金額の集計と先頭ゼロの注意点
CSVや販売管理システムのデータをExcelに取り込んだとき、12000と見えているのにSUM関数で合計できないことがあります。原因の1つが、数字に見えるデータが「文字列」として保存されていることです。
結論:売上金額や数量は、警告メニューやVALUE関数などで数値に変換できます。ただし、顧客コードや郵便番号は変換しないでください。 数字のように見える文字列にも、計算する値と識別するための値があります。
1. まず「計算する列」と「コード列」を分ける
| データ項目 | 元の値 | 本来の扱い | 変換後・注意 |
|---|---|---|---|
| 売上金額 | "12000" |
数値 | 12000へ変換 |
| 数量 | "15" |
数値 | 15へ変換 |
| 顧客コード | "00125" |
文字列 | 00125のまま保持 |
| 郵便番号 | "0123456" |
文字列 | 0123456のまま保持 |
| 商品コード | "00089" |
文字列 | 00089のまま保持 |
図:「数字に見えるか」ではなく「計算に使う値か」で変換対象を決めます。
元の文字列と変換後を比較できる数値変換の練習用Excelファイルも利用できます。
例えば、顧客コード00125を数値に変換すると125になります。見た目だけなら表示形式でゼロを補える場合もありますが、得意先マスタと突き合わせるためのコードとしての値を変えてしまうのは危険です。
2. 文字列として保存されているか調べる
Excelで確認するときは次の3点を見ます。
- セル左上に緑の三角形が表示され、「数値が文字列として保存されています」などの警告が出る。
- 同じ表示形式の列で、一部が左寄せ、一部が右寄せになっている。
- 別の空き列で
=ISTEXT(B2)と入力するとTRUEになる。
ただし、セルの左右どちらに寄っているかだけで断定しないでください。書式設定によって配置は変えられます。確実に調べるなら、ISTEXTとISNUMBERが便利です。
=ISTEXT(B2)
=ISNUMBER(B2)
今回の練習データでは、売上金額に「文字列の12000・8000・15000」と「数値の5000」が混在しているものとします。元の列のSUMは、文字列を無視して5,000だけを合計する場合があります。
3. 方法1:警告メニューから「数値に変換」する
少数のセルなら最も簡単な方法です。
- 売上金額の列で、緑の三角形が表示された対象セルを選択します。
- 表示された警告アイコンをクリックします。
- [数値に変換]を選びます。
=ISNUMBER(対象セル)でTRUEになったことを確認します。SUMで再計算し、元の売上明細との合計が合うか確かめます。
緑の三角形が表示されない場合は、次のVALUE関数を使います。警告が出ていないことは、数値として正しいことの保証ではありません。
4. 方法2:VALUE関数で別列に数値を作る
元データを残したまま変換したい場合に便利です。B列が売上金額、E列が変換後金額だとすると、E2に次を入力して下へコピーします。
=IFERROR(VALUE(B2),"要確認")
VALUEは数値を表す文字列を、Excelが認識できる数値へ変換する関数です。数値にできない文字列が混ざっていた場合、ここでは「要確認」と表示します。エラーを隠して勝手に0円扱いするより安全です。
次のような結果を目標にします。
| 行 | 売上金額B列(取込直後) | 変換後E列 |
|---|---|---|
| 2 | "12000"(文字列) |
12,000 |
| 3 | "8000"(文字列) |
8,000 |
| 4 | "15000"(文字列) |
15,000 |
| 5 | 5000(数値) |
5,000 |
| 合計 | 5,000になり得る | 40,000 |
変換結果を元の列へ戻す必要がある場合は、変換後セルをコピーして[形式を選択して貼り付け]→[値]で貼り付けます。作業コピーで検算してから置き換えてください。
5. 方法3:「1を掛ける」で一括変換する
警告メニューが出ない大量の数値文字列に対しては、空きセルに半角で1と入力し、そのセルをコピーして、変換対象範囲を選択したうえで[形式を選択して貼り付け]の演算[乗算]を使う方法もあります。
ただし、金額列と顧客コード列を一緒に選ぶと、コードまで数値化する危険があります。変換するのは数値であることが確定している列だけにしてください。空欄や不正文字列が混ざる列には、VALUEの補助列を使って「要確認」を出す方法が適します。
6. CSV取り込み時から列の型を指定する
毎月同じCSVを受け取る場合、取り込み後の変換より、最初の読み込みで列型を正しく決める方が手戻りが少なくなります。
- Excelの[データ]→[テキストまたはCSVから]を開きます。
- 元のCSVを選択し、文字化けしていないかプレビューを確認します。
- 必要なら[データの変換]でPower Queryを開きます。
- 売上金額・数量は数値型、顧客コード・郵便番号はテキスト型にします。
- 確認後にExcelへ読み込み、値・件数・合計を検算します。
特に、顧客コードを一度数値として取り込んで先頭ゼロを消してしまうと、あとからテキスト型にしても元の桁を復元できないことがあります。元CSVを残し、読み込み工程からやり直すことが重要です。
文字化けも同時に起きる場合は、先にExcelでCSVが文字化けするときの対処法を確認してください。文字コードの問題と列型の問題は別です。
7. 「数値に変換したのに合計できない」場合
- セルに半角・全角のスペースや通貨記号が混ざっていないか。
- 小数点・桁区切り記号が取り込み元の形式と一致しているか。
- 数値が15桁を超える識別番号ではないか(Excelの数値精度に注意)。
- 文字列のまま残っているセルがないか。
SUMの参照範囲が正しいか。- 「要確認」と出た行を、合計対象から黙って除外していないか。
変換後は数値になった件数も確認できます。4件の例なら=COUNT(E2:E5)は4になるべきです。SUMが40,000でも、件数が3なら何かの行が抜けているかもしれません。
よくある質問
Q. 表示形式を「数値」に変更すれば直りますか?
文字列として保存されている実際の値が変わらない場合があります。表示形式の変更とデータ型の変換は別です。ISNUMBERで確認してください。
Q. 00125を数値にしてしまいました。戻せますか?
元のコード体系が「必ず5桁」と分かっていれば表示上は補えることもあります。しかし情報が欠けた可能性があるため、元のCSV・マスタから再取得して照合するのが確実です。
Q. 文字列の数字があるのにSUMが一部だけ合計されます。
混在データでは、数値セルだけを合計し、文字列セルを集計しない場合があります。列全体をISTEXTやISNUMBERで確認してください。
参考資料
データは架空の例です。顧客コードなどの識別子を変換しないことを最優先にしてください。
