Excelの文字列数値を一括変換する4つの方法|「数値が文字列として保存されています」を解除

スポンサーリンク

SUM関数で合計したら「0」になった。VLOOKUPの結果がなぜか合わない。セルの数字をよく見ると、左上に小さな緑の三角マークが付いている――。

そんな経験はありませんか。この緑の三角は「数値が文字列として保存されています」という警告です。見た目は数字でも、中身は文字列扱いになっている状態を示します。1〜2件なら手動で直せますが、数百行のデータでは現実的ではありません。

この記事では、文字列として保存された数値を一括で本物の数値に変換する4つの方法を、状況別に使い分けられるよう早見表付きで解説します。CSV取り込み直後のデータでも、原因不明で直らないやっかいなケースでも、最後まで読めば必ず解決できる構成にしました。

「数値が文字列として保存されています」とは何が起きているのか

このメッセージはExcelのエラーチェック機能が表示する警告です。セルの値が「数字に見えるが文字列として記憶されている」状態を検知すると、左上に緑の三角マークが現れます。

文字列として保存される主な原因は次の4つです。

  • 先頭にアポストロフィ(’)を付けて入力した
  • セルの表示形式を「文字列」にしてから数字を入力した
  • CSVファイルやWebデータを取り込んだ際に文字列として読み込まれた
  • TEXT関数の戻り値をそのままコピーした

このうち厄介なのがアポストロフィです。アポストロフィはExcelが「これは文字列ですよ」と内部的に記憶するための接頭辞(メタデータ)です。見た目には表示されません。

書式変更だけでは直らない理由

「表示形式を数値に変えれば直るのでは?」と思いがちですが、これは通用しません。表示形式はあくまで「セルの見た目」を変える設定であり、セルの中身(データ型)には影響しないからです。

アポストロフィ付きで入力された値や、文字列として読み込まれたデータは、表示形式を「数値」に変えても文字列のままです。セルの中身を変えるには、Excelに「このセルを再評価して」と指示する操作が必要です。

具体的には、F2キーで編集モードに入ってEnterで確定する、区切り位置で再パースする、四則演算を行うといった操作が該当します。

文字列数値の見分け方

文字列として保存された数値は、次の特徴で見分けられます。

確認ポイント文字列の数値本物の数値
セル内の配置左寄せ右寄せ
緑の三角マーク表示される表示されない
SUM関数の結果0または含まれない正しく合計される
ISNUMBER関数FALSETRUE

確実に判定したい場合は、空きセルに =ISNUMBER(A1) と入力してください。FALSE が返れば文字列です。

【状況別早見表】どの方法を使えばいい?

4つの方法には得意・不得意があります。データの状況に応じて最適な方法を選びましょう。

状況おすすめの方法理由
数十〜数百セル、緑三角あり方法1:エラーチェックボタン範囲選択して1クリックで完了
大量データ、複数列を一気に処理方法2:形式を選択して貼り付け範囲指定で一括処理可能
元データを残したまま変換したい方法3:VALUE関数作業列で安全に変換できる
エラーチェックが効かない、緑三角が出ない方法4:区切り位置ウィザードアポストロフィを強制的に除去
スペースや特殊文字が混ざっているTRIMやSUBSTITUTEと組み合わせ不要文字を除去してから変換

まずは方法1を試し、ダメなら方法2、それでも直らない頑固なケースは方法4を試す、という順番で進めるのが効率的です。

方法1:エラーチェックボタンで一括変換(最速・GUI操作)

緑の三角マークが表示されている場合、もっとも手軽なのがエラーチェックボタンを使う方法です。範囲選択して1クリックするだけで完了します。

操作手順

  1. 文字列数値が入っているセル範囲をドラッグで選択する
  2. 範囲の左上に表示される「黄色い菱形のエラーチェックボタン(!マーク)」をクリックする
  3. メニューから「数値に変換する」を選択する

これだけで選択範囲のすべてのセルが数値に変換されます。緑の三角マークも消え、SUM関数の結果も正しく計算されるようになります。

ショートカット派には Alt キーを押してリボンを操作する方法もおすすめです。マウスを使わずに「数値に変換する」を選べます。

エラーチェックが表示されない場合

黄色い菱形ボタンが出てこないときは、エラーチェック機能がオフになっている可能性があります。次の手順で有効化してください。

  1. 「ファイル」→「オプション」をクリックする
  2. 左メニューから「数式」を選ぶ
  3. 「エラーチェック」セクションの「バックグラウンドでエラーチェックを行う」にチェックを入れる
  4. 「エラーチェックルール」の「文字列形式の数値、またはアポストロフィで始まる数値」にチェックを入れる
  5. 「OK」をクリックする

設定後、再度セルを選択するとエラーチェックボタンが表示されます。それでも出ない場合は、後述の方法2〜4を試してください。

方法2:形式を選択して貼り付け(演算:加算)で変換

大量のデータを一気に変換したいときに最も汎用性が高いのが、「形式を選択して貼り付け」の「加算」機能を使う方法です。空セルにある「0」を加算することで、Excelに強制的に数値として再評価させます。

緑の三角マークが出ていない文字列数値や、複数列にまたがるデータでも一括処理できます。

操作手順

1. 空いているセルに半角で「0」と入力する
2. その「0」が入ったセルをコピーする(Ctrl + C)
3. 変換したい文字列数値の範囲をドラッグで選択する
4. Ctrl + Alt + V を押して「形式を選択して貼り付け」ダイアログを開く
5. 「貼り付け」欄で「値」を選択する
6. 「演算」欄で「加算」を選択する
7. 「OK」をクリックする

これで選択範囲のすべてのセルが「元の値 + 0」として再計算され、文字列数値が本物の数値に変換されます。

加算後は、作業用に入力した「0」のセルを削除しておきましょう。

処理前:  '1000  '2000  '3000   ← 左寄せ・文字列
処理後:   1000   2000   3000   ← 右寄せ・数値

複数列・複数行をまとめて選択しても一括処理できるため、CSV取り込み後のデータ整形に最適です。文字列の中に半角スペースや余計な文字が混ざっていると「#VALUE!」エラーになります。その場合は方法3か後述のチェックリストを参照してください。

方法3:VALUE関数で変換

元データを残したまま、別の列に変換結果を出したいときに使うのが VALUE関数の使い方 です。文字列を数値に変換するExcelの代表的な関数で、計算式の中に組み込んで使うこともできます。

操作手順

  1. 変換結果を表示したい作業列のセルを選ぶ
  2. =VALUE(A1) と入力する(A1は変換元のセル)
  3. Enterで確定する
  4. セル右下のフィルハンドルをダブルクリックして下方向にコピーする
  5. 作業列をすべて選択してコピーし、元の列に「値のみ貼り付け」で戻す
  6. 不要になった作業列を削除する
A列(元データ)    B列(=VALUE(A1))
'1000              1000
'2500              2500
'3800              3800

数式に組み込めるのがVALUE関数の強みです。たとえば =SUM(VALUE(A1:A10)) のように、合計と変換を同時に行う使い方も可能です(Excel 365ではそのまま動作しますが、Excel 2019以前はCtrl+Shift+Enterで配列数式として確定してください)。

エラーが出る場合の対処

VALUE関数が「#VALUE!」エラーを返す場合、文字列の中に空白や特殊文字が混ざっている可能性があります。次の組み合わせで対応します。

半角・全角スペース混入:
=VALUE(TRIM(A1))

CHAR(160)(ノーブレークスペース)混入:
=VALUE(TRIM(SUBSTITUTE(A1,CHAR(160)," ")))

全角数字混入:
=VALUE(ASC(A1))

制御文字混入:
=VALUE(CLEAN(TRIM(A1)))

CHAR(160)は半角スペースに見えますが別の文字コードです。Webページからコピーしたデータによく混入します。TRIMだけでは除去できないため、SUBSTITUTEで半角スペースに置換してからTRIMで削る、という二段構えが必要です。

方法4:区切り位置ウィザードで変換

エラーチェックボタンが効かない、形式を選択して貼り付けでもダメ、というガンコなアポストロフィ付き数値には、区切り位置ウィザードが効果的です。

本来は1つのセルを複数列に分割する機能ですが、「分割せずに完了」させるとセルが再評価され、文字列が数値に変わります。

操作手順

  1. 変換したい1列をドラッグで選択する(区切り位置は1列ずつしか処理できない)
  2. 「データ」タブをクリックする
  3. 「区切り位置」ボタンをクリックする
  4. ウィザードが開いたら、何も設定を変えずに「完了」ボタンをクリックする

たったこれだけです。途中の画面で「カンマやタブ」「列のデータ形式」などの設定がありますが、すべてデフォルトのまま「完了」で問題ありません。

処理前:  A列
         '12345    ← アポストロフィ付き文字列
         '67890
         '11111

区切り位置「完了」をクリック

処理後:  A列
          12345    ← アポストロフィが除去され数値化
          67890
          11111

この方法はアポストロフィを完全に除去するため、他の方法で直らないケースでも有効です。デメリットは1列ずつ処理する必要がある点ですが、確実性は4つの中で随一です。

それでも直らないときの確認チェックリスト

上記4つの方法を試しても変換できない場合、データの中に「見えない不純物」が混ざっている可能性があります。次のチェックリストで原因を切り分けましょう。

チェック1:先頭や末尾にスペースが入っていないか

セルをダブルクリックして編集モードにし、カーソルキーで先頭・末尾に移動してスペースの有無を確認します。半角・全角どちらも混在する可能性があります。

半角・全角スペースを一括除去:
=SUBSTITUTE(SUBSTITUTE(A1," ","")," ","")

チェック2:ノーブレークスペース(CHAR(160))が混ざっていないか

Webページからコピーしたデータでよく発生します。見た目は普通の空白と区別がつきません。

=SUBSTITUTE(A1,CHAR(160),"")

チェック3:全角数字が含まれていないか

「123」のような全角数字は数値変換できません。ASC関数で半角に変換します。

=VALUE(ASC(A1))

チェック4:印刷不可能な制御文字が混ざっていないか

CSVやテキストファイル経由のデータには、タブや改行などの制御文字が紛れ込んでいることがあります。

=VALUE(CLEAN(TRIM(A1)))

CLEAN関数は文字コード1〜31の制御文字を除去し、TRIM関数は連続スペースを除去します。両方を組み合わせると大半の不純物を取り除けます。

チェック5:LEN関数で文字数を確認する

=LEN(A1) で実際の文字数を調べましょう。見た目より多ければ余分な文字が混入している証拠です。「123」が表示されているのにLENが5なら、前後に2文字分の見えない文字が潜んでいます。

なお、変換と逆方向――数値を文字列として書式付きで表示したい場合は TEXT関数の使い方 を参照してください。

まとめ:状況別おすすめ手法一覧表

文字列として保存された数値を変換する4つの方法を、改めて比較表でまとめます。

方法おすすめ度操作の手軽さ対応範囲こんなときに使う
方法1:エラーチェックボタン★★★緑三角があるセル一般的なケース。まず最初に試す
方法2:形式を選択して貼り付け(加算)★★★ほぼすべて複数列の大量データを一括処理
方法3:VALUE関数★★☆元データ保持型元の列を残したい・数式に組み込みたい
方法4:区切り位置ウィザード★★☆頑固なアポストロフィ他の方法で直らないとき

迷ったら「方法1 → 方法2 → 方法4」の順で試してください。元データを残したい場面では方法3を、スペースや特殊文字が原因の場合はチェックリストの数式と組み合わせて対処しましょう。

SUMやVLOOKUPの計算結果がおかしいときは、まず緑の三角マークの有無を確認する。それが文字列数値トラブルの解決の第一歩です。本記事の方法を覚えておけば、CSV取り込み後の整形作業がぐっと楽になります。ぜひブックマークしてご活用ください。

タイトルとURLをコピーしました