VALUE・NUMBERVALUE関数|文字列を数値に変換
VALUE関数とNUMBERVALUE関数は、文字列として格納された数値を数値データに変換する関数です。CSVファイルのインポートや外部データの取り込みで、数値が文字列として認識されてしまい計算できないトラブルは頻繁に発生します。この記事では、文字列を数値に変換する方法と、変換できない場合の対処法を解説します。
VALUE関数の基本構文
=VALUE(文字列)
引数の説明
| 引数 | 説明 | 必須/任意 |
|---|---|---|
| 文字列 | 数値に変換する文字列やセル参照 | 必須 |
VALUE関数の変換例
| 文字列 | VALUE関数の結果 | 説明 |
|---|---|---|
| ”1234” | 1234 | 数字のみの文字列 |
| ”1,234” | 1234 | 桁区切りカンマ付き |
| ”12.5” | 12.5 | 小数点付き |
| ”50%“ | 0.5 | パーセント表記 |
| ”2026/4/1” | 46112 | 日付のシリアル値 |
| ”12:30” | 0.520833… | 時刻のシリアル値 |
| ”ABC” | #VALUE! | 数値に変換できない |
VALUE関数は、Excelが数値として認識できる形式の文字列であれば変換できます。桁区切りのカンマ、パーセント記号、日付や時刻の形式にも対応しています。
NUMBERVALUE関数の基本構文
=NUMBERVALUE(文字列, [小数点記号], [桁区切り記号])
引数の説明
| 引数 | 説明 | 必須/任意 |
|---|---|---|
| 文字列 | 数値に変換する文字列 | 必須 |
| 小数点記号 | 小数点として使用されている文字(省略時はシステム設定に従う) | 任意 |
| 桁区切り記号 | 桁区切りとして使用されている文字(省略時はシステム設定に従う) | 任意 |
NUMBERVALUE関数の変換例
| 数式 | 結果 | 説明 |
|---|---|---|
| =NUMBERVALUE(“1.234,56”, ”,”, ”.“) | 1234.56 | ヨーロッパ式の数値を変換 |
| =NUMBERVALUE(“1,234.56”, ”.”, ”,“) | 1234.56 | 日本・米国式の数値を変換 |
| =NUMBERVALUE(“50%“) | 0.5 | パーセント表記 |
NUMBERVALUE関数は、Excel 2013以降で使用できます。海外のシステムからインポートしたデータで、小数点にカンマを使用しているような場合に有効です。
VALUE関数とNUMBERVALUE関数の違い
| 項目 | VALUE関数 | NUMBERVALUE関数 |
|---|---|---|
| 対応バージョン | 全バージョン | 2013以降 |
| 小数点記号の指定 | 不可(システム設定) | 可能 |
| 桁区切り記号の指定 | 不可(システム設定) | 可能 |
| 日付・時刻の変換 | 可能 | 不可 |
| パーセント表記 | 可能 | 可能 |
通常の日本語環境ではVALUE関数で十分ですが、海外形式の数値を扱う場合はNUMBERVALUE関数が便利です。
実践例1:CSVインポート後の数値変換
文字列として取り込まれた数値を修正
CSVファイルをExcelで開くと、数値が文字列として認識されることがあります。セルの左上に緑色の三角マークが表示されるのが目印です。
| A列(文字列状態) | B列(数値変換後) | |
|---|---|---|
| 2 | ’1500 | 1500 |
| 3 | ’2300 | 2300 |
| 4 | ’980 | 980 |
B列の数式です。
=VALUE(A2)
金額データの変換
桁区切りカンマや通貨記号が含まれた金額文字列を数値に変換します。
| A列(金額文字列) | B列(数値) | |
|---|---|---|
| 2 | 1,500円 | 1500 |
| 3 | 2,300円 | 2300 |
| 4 | 980円 | 980 |
「円」が含まれている場合はSUBSTITUTE関数で除去してからVALUE関数で変換します。
=VALUE(SUBSTITUTE(SUBSTITUTE(A2, "円", ""), ",", ""))
この数式は、まず「円」を除去し、次にカンマを除去してからVALUE関数で数値に変換しています。
「\」記号を含む金額の変換
=VALUE(SUBSTITUTE(SUBSTITUTE(A2, "\", ""), ",", ""))
実践例2:海外形式の数値データ処理
ヨーロッパ式の数値を変換
ドイツやフランスなどのヨーロッパ諸国では、小数点にカンマ、桁区切りにピリオドを使用します。
| A列(ヨーロッパ式) | B列(変換後) | |
|---|---|---|
| 2 | 1.234,56 | 1234.56 |
| 3 | 10.000,00 | 10000 |
| 4 | 567,89 | 567.89 |
=NUMBERVALUE(A2, ",", ".")
第2引数で小数点記号をカンマに、第3引数で桁区切り記号をピリオドに指定しています。
海外拠点からの売上データ統合
日本本社と海外拠点で異なる数値形式のデータを統合する場合に使います。
=IF(C2="JP", VALUE(A2), NUMBERVALUE(A2, ",", "."))
C列に地域コード(JP、DE、FRなど)が入力されている場合に、地域に応じた変換を行います。
実践例3:数値化できない場合の対処
IFERROR関数との組み合わせ
変換対象の文字列に数値化できないデータが混在している場合、VALUE関数は#VALUE!エラーを返します。IFERROR関数でエラー処理を行います。
=IFERROR(VALUE(A2), 0)
エラーの場合に0を返す例です。エラーの場合に空文字を返すには次のようにします。
=IFERROR(VALUE(A2), "")
数値以外の文字を除去してから変換
数値と文字が混在した文字列から数値だけを抽出して変換する場合、単純にVALUE関数を適用するとエラーになります。
| A列(混在データ) | B列(数値のみ) | |
|---|---|---|
| 2 | 数量: 150個 | 150 |
| 3 | 売上 2,300万円 | 2300 |
| 4 | No.45 | 45 |
このような場合は、SUBSTITUTE関数で不要な文字を除去してからVALUE関数を適用します。
=VALUE(SUBSTITUTE(SUBSTITUTE(A2, "数量: ", ""), "個", ""))
ただしこの方法はデータのパターンが一定の場合にのみ有効です。パターンが多様な場合は、正規表現を使えるVBAやPower Queryの利用を検討してください。
実践例4:文字列型の日付を日付データに変換
8桁の数字文字列を日付に変換
基幹システムからエクスポートした日付が「20260401」のような8桁の数字文字列になっている場合です。
| A列(文字列日付) | B列(日付データ) | |
|---|---|---|
| 2 | 20260401 | 2026/4/1 |
| 3 | 20260315 | 2026/3/15 |
| 4 | 20261231 | 2026/12/31 |
=DATE(LEFT(A2,4), MID(A2,5,2), RIGHT(A2,2))
LEFT関数で年(4桁)、MID関数で月(2桁)、RIGHT関数で日(2桁)を抽出し、DATE関数で日付データに変換しています。
「YYYY/MM/DD」形式の文字列を変換
文字列として格納された日付をVALUE関数で変換できます。
=VALUE("2026/4/1")
結果はシリアル値(46112)になります。セルの書式を日付形式に設定すれば「2026/4/1」と表示されます。
DATEVALUE関数を使うこともできます。
=DATEVALUE("2026/4/1")
文字列の数値判定
数値に変換できるかどうかを判定
VALUE関数とISERROR関数を組み合わせて、文字列が数値に変換可能かを判定します。
=IF(ISERROR(VALUE(A2)), "文字列", "数値に変換可能")
セルのデータ型を確認
ISNUMBER関数でセルの値が数値かどうかを判定できます。
=IF(ISNUMBER(A2), "数値", "数値以外")
VALUE関数を通す前にISNUMBER関数で確認すれば、既に数値のデータに対して不要な変換を避けられます。
=IF(ISNUMBER(A2), A2, IFERROR(VALUE(A2), A2))
この数式は、数値であればそのまま返し、文字列であれば数値への変換を試み、変換できなければ元の値を返します。
補足:数値から文字列への変換と互換性
逆に数値を文字列に変換する場合はTEXT関数を使います。
=TEXT(A2, "0")
先頭のゼロを保持したい場合は桁数を指定します。
=TEXT(A2, "00000")
5桁のゼロ埋めで文字列に変換します。
Google スプレッドシートでの互換性
VALUE関数はGoogle スプレッドシートでも同じ構文で使用できます。NUMBERVALUE関数もGoogle スプレッドシートで利用可能です。ただし、ロケールの設定によって小数点記号や桁区切り記号のデフォルトが異なる場合があるため、明示的に引数を指定することをおすすめします。
まとめ
VALUE関数とNUMBERVALUE関数は、文字列を数値に変換するための関数です。
- VALUE関数は数値形式の文字列、パーセント、日付・時刻を数値に変換できる
- NUMBERVALUE関数は小数点記号や桁区切り記号を指定できるため、海外形式のデータに対応できる
- 変換できない文字列に対してはIFERROR関数でエラー処理を行う
- 通貨記号や単位が含まれる場合はSUBSTITUTE関数で除去してから変換する
- 8桁の日付文字列はDATE関数と文字列関数の組み合わせで変換する
CSVインポートや外部データとの連携で、文字列型の数値は避けられない問題です。VALUE関数を使いこなして、データの計算や集計をスムーズに行ってください。