セルの左上に緑色の三角マークが表示されていませんか? これは「数値が文字列として保存されています」という Excel の警告です。放置すると SUM の合計がずれたり、VLOOKUP が #N/A を返したりする原因になります。
この記事では、緑の三角マークが出る原因の見分け方と、状況に合った一括変換の方法を解説します。
記事の手順を試せるサンプルファイルを用意しました。文字列として保存された数値が混在する売上データや、TYPE 関数・VLOOKUP・VALUE 関数の練習シートが入っています。
緑の三角マーク(エラーインジケーター)の正体
セルの左上に出る小さな緑色の三角形は、Excel のエラーチェック機能が表示する警告です。

この三角マークが表示されているセルを選択すると、左側に黄色い警告アイコンが表示されます。アイコンをクリックすると「数値に変換する」などのメニューが現れます。
これは「見た目は数値に見えるけれど、内部的には文字列として保存されていますよ」と Excel が教えてくれているサインです。
なお、緑の三角マークは「数値が文字列として保存されている」以外のエラー(たとえば数式の不整合など)でも表示されます。この記事では「数値が文字列として保存されています」のケースに絞って解説します。
文字列として保存される主な原因
「数値が文字列として保存されている」状態は、主に次の 3 つの操作で発生します。
原因1:セルの書式が先に「文字列」になっていた
最もよくある原因です。CSV ファイルの取り込み、外部システムからの貼り付け、あるいは他の人が書式設定したシートに数値を入力した場合に起こります。
セルの表示形式が「文字列」(@)になっている状態で数値を入力すると、Excel は入力された値を文字列として保存します。
注意:数値を入力した後に書式を「文字列」に変更しただけでは、内部の値は数値のままです。すでに入力済みの値は影響を受けません。
原因2:先頭にアポストロフィ(’)を入力した
セルに '123 のように先頭にアポストロフィを付けて入力すると、Excel はそのセルをテキストモードに切り替えます。セルには「123」と表示されますが、内部的には文字列として保存されています。
原因3:数式の結果が文字列になっている
=TEXT(100,"0") や =A1&B1 のように、文字列を返す数式の結果も文字列です。
ただし、数式の結果による文字列には緑の三角マークは表示されません。このパターンは見落としやすいため、次のセクションで紹介する TYPE 関数での確認が有効です。
文字列か数値かを見分ける方法
見た目が同じ「123」でも、内部が数値なのか文字列なのかで関数の動作が変わります。以下の方法で判別できます。
TYPE 関数で判別する(最も確実)
=TYPE(A1)
結果が 1 なら数値、2 なら文字列です。

セルの配置で見分ける
標準の状態では、数値は右揃え、文字列は左揃えで表示されます。ただし、書式設定で配置を変更している場合はこの方法では判断できません。
LEN 関数で不可視文字を検出する
=LEN(A1)
見た目は「123」(3 文字)なのに LEN の結果が 4 以上なら、先頭や末尾に見えないスペースが含まれている可能性があります。
数値に一括変換する 3 つの方法
文字列として保存された数値を本来の数値に戻す方法は、大きく 3 つあります。状況に応じて使い分けてください。
方法1:エラーメニュー「数値に変換する」(最も手軽)
緑の三角マークが表示されているセルに使える最も簡単な方法です。
- 対象のセル範囲を選択する(Ctrl + Shift + End で末尾まで一括選択できます)
- 左上に表示される黄色い警告アイコンをクリックする
- メニューから「数値に変換する」を選択する
これだけで選択範囲のすべてのセルが数値に変換されます。
制約:緑の三角マークが出ていないセル(数式の結果が文字列になっているケースなど)にはこの方法は使えません。
方法2:区切り位置ウィザード(緑三角がなくても使える)
緑の三角マークが表示されていない場合でも使える方法です。
- 対象のセル範囲を選択する
- [データ]タブ →[区切り位置]をクリックする
- ウィザードが開いたら、何も変更せずにそのまま[完了]をクリックする

方法3:形式を選択して貼り付け「乗算」
少し手順が多いですが、緑の三角マークがなくても使える確実な方法です。
- 空いているセルに 1 を入力する
- そのセルをコピーする(Ctrl + C)
- 変換したいセル範囲を選択する
- Ctrl + Alt + V で「形式を選択して貼り付け」ダイアログを開く
- 「演算」セクションで「乗算」を選択し、OK をクリックする
- 手順 1 で使ったセルの「1」を削除する

各セルの値に 1 を掛けることで、文字列が数値に強制変換されます。
3 つの方法の比較
| 方法 | 表示形式の変化 | 緑三角が必要 | 補足 |
|---|---|---|---|
| エラーメニュー | 変換後に要確認 | 必要 | 最も手軽 |
| 区切り位置 | 「@」のまま | 不要 | 変換後に書式を戻す手間あり |
| 貼り付け×1 | 「@」のまま | 不要 | 手順が多いがどんな場面でも使える |
迷ったら:緑の三角マークが出ているなら「エラーメニュー」、出ていないなら「区切り位置」が手軽です。いずれの方法でも、変換後にセルの表示形式が「文字列」のまま残っていないか確認し、必要なら「標準」に戻してください。
VALUE 関数で変換する方法と注意点
数式の中でテキストを数値に変換したい場合は、VALUE 関数を使います。
=VALUE(A1)
別の列にこの数式を入力すれば、文字列として保存された数値を数値に変換できます。

VALUE 関数の注意点
空行を空のまま残したい場合は、IF を組み合わせます。
=IF(A1="","",VALUE(A1))
この数式なら、元のセルが空のときは空欄、値があるときだけ数値に変換されます。
VALUE 関数が扱えるテキスト
VALUE 関数は前後のスペースやカンマ区切り(「1,234」→ 1234)も自動的に処理します。ただし、数値に変換できない文字列(「abc」など)に対しては #VALUE! エラーを返します。
SUM・VLOOKUP の結果がおかしいときの確認フロー
文字列として保存された数値は、関数の動作に深刻な影響を与えます。
SUM の合計が合わない
次の例では、「数量」列に文字列として保存された数値が混在しています。

SUM 関数は文字列の「10」「15」「20」「5」を無視するため、合計は 125 ではなく 75 になっています。
なお、=C2*D2 のようなセル同士の四則演算では、Excel が文字列を自動的に数値に変換するため小計は正しく計算されます。この「小計は合っているのに合計が合わない」という状態が、問題の発見を遅らせる原因です。
VLOOKUP・XLOOKUP が #N/A を返す
VLOOKUP と XLOOKUP は、検索値と検索範囲のデータ型が一致しないと #N/A を返します。

「データがあるのにヒットしない」場合は、TYPE 関数で検索値と検索範囲の型を確認してください。
関連記事:VLOOKUPで「データがあるのにヒットしない」ケースの例と対処案
COUNTIF は例外的に型を区別しない
COUNTIF・COUNTIFS は数値と文字列の型の違いを気にせずカウントします。そのため、COUNTIF の結果は正しいのに VLOOKUP は #N/A、という一見矛盾した状態が起こりえます。
確認と修正の手順
- TYPE 関数で対象セルが数値(1)か文字列(2)か確認する
- 文字列のセルがあれば、前述の方法で数値に変換する
- 変換後に SUM や VLOOKUP の結果が正しくなったことを確認する
変換してはいけないケース
すべての「文字列として保存された数値」を変換すべきとは限りません。先頭のゼロに意味があるデータは、文字列のまま保持すべきです。
- 郵便番号(001-0012 → 数値にすると 10012 になる)
- 電話番号(090-xxxx-xxxx → 先頭の 0 が消える)
- 社員コード・製品コード(A001、0050 など)
これらのデータに対して SUM は不要ですし、VLOOKUP で使う場合は検索値と検索範囲の型を揃えれば問題ありません。
固定桁数の数値コード(0050 など)なら、TEXT 関数で同じ桁数の文字列に変換して検索できます。
=VLOOKUP(TEXT(A1,"0000"),検索範囲,2,FALSE)
英字混在のコード(A001 など)の場合は TEXT 関数では対応できないため、検索範囲側も文字列で統一してください。
緑の三角マークが気になる場合は、対象セルを選択 → 警告アイコン →「エラーを無視する」で非表示にできます。
まとめ
- セル左上の緑の三角マークは「数値が文字列として保存されている」という警告
- 主な原因は、セルの書式が「文字列」になっている、先頭にアポストロフィがある、数式の結果が文字列である、の 3 パターン
- 変換方法は「エラーメニュー」「区切り位置」「貼り付け×1」の 3 つ。緑三角があるならエラーメニューが最も手軽。いずれの方法でも、変換後にセルの表示形式が「文字列」のまま残っていないか確認する
- VALUE 関数で変換する場合は、空セルが 0 になる点に注意し、
=IF(A1="","",VALUE(A1))で対策する - SUM は文字列を無視、VLOOKUP は型不一致で #N/A になるため、合計や検索がおかしいときはまず TYPE 関数で確認
- 郵便番号・電話番号など先頭ゼロが必要なデータは変換せず文字列のまま保持する
コメント