要点 —
VALUEは数値のように見えるテキスト文字列を受け取り、合計・並べ替え・ 計算に渡せる実際の数値を返します。構文は=VALUE(text)。=VALUE("1,234.50")は1234.5を返します。これは TEXT のちょうど逆関数 です。わざわざ意図して入力することはめったになく、データがテキストとして到着し (「文字列として保存された数値」の緑の三角形)合計されないときに手を伸ばします。唯一の 弱点は、小数点や桁区切りにシステムのロケールに従うことで、ヨーロッパの同僚から 届いたファイルが壊れます。そのためにあるのがNUMBERVALUEです —— どの区切り記号を 想定すべきかを指定できます。=NUMBERVALUE("1.234,56", ",", ".")→1234.56。
=VALUE("1,234.50") ' -> 1234.5 (これで本物の数値)
=VALUE("$9.00") ' -> 9
=NUMBERVALUE("1.234,56", ",", ".") ' -> 1234.56 (ヨーロッパ式、どのロケールでも)
テキストを数値に変換しようと思って机に向かう人はいません。実際に起きるのは、ウェブサイト
から貼り付けたり、CSV を開いたり、エクスポートから取り込んだりして、Excel があなたの数値を
テキストだと判断することです。値はセルの左に張りつき、小さな緑の警告三角形をまとい、
SUM は列が空であるかのように 0 を報告します。VALUE とそのロケール対応の兄弟
NUMBERVALUE が、その数式による答えです。このガイドでは、なぜこの問題が起きるのか、
二つの関数、そしてしばしば両者に勝るより速い解決策を説明します。
このガイドで学べること
- 基本となる考え方:
VALUEはTEXTの逆関数 —— テキストの数値 → 数値 - 本当の原因: 「文字列として保存された数値」とその見分け方
VALUEの基本、そして区切り記号にまつわるロケールの罠NUMBERVALUE—— どのマシンでも外国式の数値書式を解析する- 関数のいらない、より速い解決策:
*1、二重単項マイナス--、区切り位置 - なぜ
"5"+2は動くのに、テキストの数値のSUMは動かないのか —— 肝心な非対称性
基本となる考え方: TEXT の逆関数
TEXT は数値を書式付きの文字列に変えます。VALUE は
そのフィルムを逆再生します。数値を記述している文字列を読み取り、数値そのものを返すの
です。
=TEXT(1234.5, "#,##0.00") ' 数値 -> "1,234.50" (テキスト)
=VALUE("1,234.50") ' "1,234.50" (テキスト) -> 1234.5 (数値)
「〜のように見える」という言葉が肝心な働きをしています。VALUE が成功するのは、その
文字列を Excel が現在のロケールで数値として認識できる場合だけです ——
"1,234.50"、"$9"、"75%"、"2.5E3" はすべて解析できますが、"twelve" や
"12 apples" は #VALUE! を返します。このイメージを持ってください。VALUE は
パーサーであってクリーナーではありません —— テキストとして書かれた整った数値を読み取り
ますが、不要なゴミは取り除きません。
本当の問題: 文字列として保存された数値
自分で入力した数値に VALUE が必要になることはほとんどありません —— 必要になるのは
到着した数値に対してです。インポートや貼り付けの後、次の兆候を探しましょう。
- 値が左揃えになっている(本物の数値は右揃え)。
- 隅に緑の三角形があり、ポイントすると*「数値が文字列として保存されています」*と表示 される。
- 範囲に対する
SUM/AVERAGEが 0 を返す、または行を無視する。 - 並べ替えると
"9"より"100"が前に来る(テキストは 1 文字ずつ並べ替えられる)。
この 4 つはすべて同じ根本事実です。セルには一二三という数量ではなく、1、2、3 という
文字が入っているのです。VALUE はその文字を数量に戻します。
=VALUE(A2) ' A2 にはテキスト "1234.5" が入っている -> 1234.5
=SUM(VALUE(A2:A9)) ' 最新の Excel ではスピルして変換後の数値を合計する
ロケールの罠 —— そして NUMBERVALUE が存在する理由
ここが鋭い刃です。VALUE はあなたの地域設定を使って区切り記号を解釈します。米国の
マシンでは . が小数点で , が桁区切りですが、ドイツやフランスのマシンではこれが
逆になります —— . が桁区切りで , が小数点です。そのため、ヨーロッパの同僚が
エクスポートした値は次のようになります。
' テキストは "1.234,56" (ヨーロッパ式で 1234.56 の意)
=VALUE("1.234,56") ' 米国のマシンでは -> #VALUE! または誤った 1.23456 —— 壊れる
NUMBERVALUE は区切り記号を引数として取ることで当て推量を排除し、同じ数式がどの
マシンでも同じ答えを返すようにします。
=NUMBERVALUE("1.234,56", ",", ".") ' 小数点="," 桁区切り="." -> どこでも 1234.56
=NUMBERVALUE("12 345,60", ",", " ") ' フランス式の細いスペース区切り -> 12345.6
ルールはこうです。テキストが数式を実行するマシンとは異なるロケールから来ている場合は、
NUMBERVALUE を使い、区切り記号を明示する。 それは、別の国で開いても生き延びる
ブックと、数値を静かに壊してしまうブックの違いです。
関数のいらない、より速い解決策
多くの場合、最も手早い治療法は VALUE ではありません。テキストの数値は数値になるまで
算術演算一つぶんの距離しかないため、値を変えない算術演算なら何でも暗黙変換されます。
- 1 を掛ける:
=A2*1。二重単項マイナス:=--A2(負の負)。どちらもテキストを 数値に強制変換し、VALUEより短くなります。 - 形式を選択して貼り付け → 乗算: 範囲を選択し、空のセルをコピーして、[形式を選択 して貼り付け] → [演算] の 乗算 を選びます —— 作業列なしでその場で変換します。
- 区切り位置: 列を選択し、[データ] → [区切り位置] → [完了]。Excel が各セルを再解析し、 テキストのフラグを外します。一度きりのクリーンアップに最適です。
- 緑の三角形メニュー: セルを選択し、警告アイコンをクリック → 数値に変換する。少数の セルなら十分です。
変換がライブの数式でなければならない(元のテキストが変わり続ける)とき、または
ロケールが問題になるときは VALUE/NUMBERVALUE に手を伸ばし、手早く静的な
クリーンアップには *1 や区切り位置に手を伸ばしましょう。
知っておく価値のある非対称性
最新の Excel は多くの文脈でテキストの数値を静かに暗黙変換します —— ="5"+2 は 7 を
返し、=A1*1 も動作します —— そのため VALUE は 10 年前ほど必要には感じられなくなり
ました。しかし暗黙変換が決して起きない場所が一つあり、それが最も重要な場所なのです。
="5" + 2 ' -> 7 (算術演算がテキストを暗黙変換する)
=SUM("5", 2) ' -> 7 (リテラルのテキスト引数は暗黙変換される)
=SUM(A1:A9) ' -> 範囲内のテキストの数値はすべて無視される <-- 罠
集計関数は範囲内のテキストを飛ばします。 SUM、AVERAGE、MAX とその仲間は、
テキストの数値をラベルであるかのように素通りします。だからこそ、見た目は満杯の列が
合計ゼロになるのです。解決策は、集計する前に値を本当に数値にしておくことです ——
VALUE、*1、または区切り位置で。
判断のしどころ
最強の解決策は、最も上流にあるものです。そもそもテキストが作られないようにする。
CSV のインポートが原因なら、インポート時に(または Power Query
で)列の型を数値に設定します。システムが余計な文字つきの数値をエクスポートするなら、
そのエクスポートを直します。VALUE とその親戚は、元データに触れられず、数値が今すぐ
必要なときの正しいツールです —— しかし毎週同じクリーンアップをしているなら、それは
VALUE の列をもう一つ足すのではなく、パイプラインを直すべきというサインです。
逆方向の旅 —— 本物の数値を書式付きテキストとして表示したい —— については TEXT を参照してください。テキストとして閉じ込められた 日付の専門家は DATEVALUE です。
ExcelMaster はどう役立つか
「文字列として保存された数値」は、兆候を知れば一目瞭然でも、知る前は途方に暮れるたぐいの
問題です —— そしてそのロケール版(米国のノート PC 上のヨーロッパのファイル)は熟練者
すら打ち負かします。ExcelMaster はデータそのものからパターンを見抜きます。合計され
ない、数値らしく見える列を目にし、区切り記号がローカルか外国式かを識別し、きれいに変換
します —— ファイルが海外由来なら NUMBERVALUE と正しい区切り記号で、そうでなければ
一発でその場修正します。あなたは症状を説明するだけ(「これが合計されない」)で、原因は
ExcelMaster が診断します。
よくある質問
Excel でテキストを数値に変換するには?
最速: 1 を掛ける(=A1*1)か、二重単項マイナス(=--A1)を使います。関数としては
=VALUE(A1)。数式なしで列全体を変換するなら、[データ] → [区切り位置] → [完了]、
または [形式を選択して貼り付け] → [乗算] を使います。
なぜ VALUE が #VALUE! を返すのですか?
その文字列があなたのロケールで整った数値になっていないからです。原因: 余計なテキスト
や単位("12 kg")、外国式の区切り記号(米国のマシン上の "1.234,56" —— NUMBERVALUE
を使いましょう)、あるいは本当に非数値のテキスト。VALUE はテキストとして書かれた数値を
解析しますが、非数値の文字を取り除くわけではありません。
VALUE と NUMBERVALUE の違いは?
VALUE はシステムの小数点と桁区切りを使います。NUMBERVALUE はそれらを指定
できます: =NUMBERVALUE(text, decimal_sep, group_sep)。テキストが数式を実行するマシンと
異なる地域書式から来ているときは、いつでも NUMBERVALUE を使いましょう。
なぜ私の SUM が一部の数値を無視するのですか?
それらが文字列として保存されているからです(左揃え、緑の三角形)。SUM は範囲内の
テキストを飛ばします。まず VALUE、=range*1、または区切り位置で変換してから合計しま
しょう。
そもそもまだ VALUE は必要ですか?
必要ないこともあります —— ="5"+2 や =A1*1 はテキストを自動で暗黙変換します。しかし
SUM、AVERAGE、その他範囲に対する集計は決して暗黙変換しないので、合計する前に
テキストの数値を変換する必要は依然としてあります。
検証環境
検証環境: Excel 365 (Windows 11) — 最終確認 2026-07-02。
関連ガイド: Excel TEXT · Excel DATEVALUE と TIMEVALUE · Excel SUBSTITUTE と REPLACE · Excel SUMIFS · Excel IFERROR
