SUBSTITUTE 関数:構文、使用例、エラーの解決法
2026-10-13 更新 · 無料 · Excel と Google Sheets に対応
構文
=SUBSTITUTE(text, old_text, new_text, [instance_num])クイック回答
SUBSTITUTE は現れるすべての場所でテキストを別のテキストに置き換えます:=SUBSTITUTE(A2, "-", " ") なら「555-01-2345」が「555 01 2345」に。大文字小文字を区別し、instance_num を省略すると全部置換、instance_num が 0 だと #VALUE! になります。
構文
=SUBSTITUTE(text, old_text, new_text, [instance_num])| 引数 | 意味 |
|---|---|
| text | 検索対象のセルまたは文字列。必須。 |
| old_text | 置き換える正確なテキスト。一致判定は大文字小文字を区別し、字面どおり——ワイルドカードは使えません。必須。 |
| new_text | 置き換え後の内容。空文字列 "" はマッチを丸ごと消します。必須。 |
| [instance_num] | 置き換える出現位置:3 なら 3 つ目だけ変更。省略すると全部変わります。1 以上である必要があります。 |
地域設定によっては引数がカンマではなくセミコロンで区切られます:=SUBSTITUTE(A2; "-"; " ")。カンマが小数点記号の国では標準の挙動です。
誰もが一度は驚く挙動が 2 つ:一致判定は大文字小文字を区別する(「ID」と「id」は別のターゲット)、そして instance_num なしでは置換はすべての出現に当たる——「最初だけ置換」のスイッチはありません。
基本例
=SUBSTITUTE(A2, "-", " ")ハイフンから空白へ:ハイフンで書かれた電話番号・型番・ID 番号が一発で読める形に。すべてのハイフンが変わります——数式はセル全体で置換を繰り返します。
=SUBSTITUTE(SUBSTITUTE(A2, "(", ""), ")", "")文字の削除:new_text の "" はマッチを痕跡なく消します。SUBSTITUTE を 2 重にすれば、1 つの数式で「(555) 0102」の両側の括弧を剥ぎ取れます——消したい文字の種類ごとに 1 段ずつ。
=SUBSTITUTE(A2, "/", "-", 2)instance_num 引数は 1 つの出現に固定します:2 つ目のスラッシュだけがハイフンに変わり、1 つ目と 3 つ目はそのまま。出現はテキストの先頭から左から右へ数えます。
=LEN(A2)-LEN(SUBSTITUTE(A2, " ", ""))+1定番の語数カウント:空白を全部消して 2 つの長さを比べると空白の個数が出て、+1 で語数になります。VBA も分析ツールも不要——数式 1 本です。
SUBSTITUTE の結果はテキストです——数字に見えても。「1 234」を掃除した「1234」は合計も平均もグラフもできません。包みます:=VALUE(SUBSTITUTE(A2, " ", "")) が掃除済みテキストを本物の数値へ戻します。
よくあるエラーと修正方法
| 症状 | 最も多い原因 | 修正 |
|---|---|---|
| 何も置き換わらない | 大文字小文字の不一致——「ID」は「id」に一致しない——または見えない末尾空白で「abc 」と「abc」が別物になっている。 | 大文字小文字を完全に合わせる、先に TRIM で掃除する、または「検索と置換」ダイアログを使う——あちらでは大文字小文字の一致はチェックボックスです。 |
| #VALUE! | instance_num が 0 または負の数。 | 1 以上を使う——または引数を丸ごと省略して全部置き換えます。 |
| 違う場所が変わった | 出現は左から右へ数えられ、instance 2 が残しておきたかったマッチに当たった。 | 先に LEN の技で出現数を数えるか、前後の文字を含めてターゲットを一意にします:=SUBSTITUTE(A2, "/2024/", "/2025/") はこのパターン内のスラッシュだけに当たります。 |
| 予想より多く変わった | 短い old_text が長い単語の内部にも一致:1 の置換で 12 や 21 もやられる。 | 前後の文字を old_text に含めるか、instance_num で出現位置を固定します。 |
| 数字が計算できなくなった | 結果はテキストです——数字に見えても。 | 全体を VALUE で包むか、計算には元のセルを使い続けます。 |
もう 1 つの無音の空振り:instance_num が実際の出現数を超えると、SUBSTITUTE は元のテキストをそのまま返します——エラーもヒントもなし。数式が「何もしない」なら、スペルを疑う前にマッチ数を数えましょう。
SUBSTITUTE と REPLACE の比較
| SUBSTITUTE | REPLACE | |
|---|---|---|
| 見つけ方 | テキストそのもの——セル内のどこにあっても | 固定位置:開始位置 + 文字数 |
| 使う場面 | 何を変えるか分かっているが場所は不明 | 正確な位置と長さが分かっている |
| 範囲 | すべての出現——instance_num で 1 つに固定も可 | 1 回の呼び出しで 1 つの固定ブロック |
| 例 | =SUBSTITUTE(A2, "-", " ") | =REPLACE(A2, 4, 2, "XX") |
REPLACE は固定位置の文字を置き換えます——「常に 4〜5 文字目を上書き」のような硬いレイアウト向けの道具です。対象テキストがセル内のどこにでも現れ得るなら SUBSTITUTE の出番です——位置ではなくテキストを狩るからです。
SUBSTITUTE と検索と置換の比較
| SUBSTITUTE | 検索と置換(Ctrl+H) | |
|---|---|---|
| 存在する場所 | 数式——結果は専用のセルに置かれ、元は無傷 | ダイアログ——セルをその場で編集し、元を上書き |
| 再計算 | する——元が変われば置換結果も追従 | しない——一発勝負。新データは再実行 |
| 繰り返し範囲 | フィルダウンで 1 数式が数千に | ブック全体を 1 回で |
| 大文字小文字 | 常に区別する | デフォルトは区別せず、大文字と小文字を区別するチェックボックスあり |
実務の分担:シートに既にあるものの一発掃除は「検索と置換」、掃除が新データ——インポート、更新、大量コピペ——に耐える必要があれば SUBSTITUTE。多くのシートは生インポート列を食べる SUBSTITUTE 列で落ち着きます。
Google Sheets での SUBSTITUTE
名前・4 つの引数・大文字小文字を区別する字面一致、すべて同じ——上の数式はそのまま貼り付けられます。Sheets は同じ発想を強力な道具にもしています:REGEXREPLACE は正規表現を受け付け、1 つの数式で乱れた書式を一気に正規化できます。
- カンマを小数点に使う地域ではセミコロンへ:=SUBSTITUTE(A2; "-"; " ")。
- Sheets の「検索と置換」ダイアログ(Ctrl+H)には Excel にない「正規表現を使用して検索」オプションがあります。
- 文字の削除では new_text の "" が Excel とまったく同じ挙動——痕跡は残りません。
制限と上級テクニック
- 1 回の呼び出しで old_text は 1 つ:複数種類の文字を掃除するにはネスト——1 段につき 1 種類ずつ剥ぎます。
- パターンが重なる場合は順序が重要:先に「::」を「:」より先に置き換える——でないと単一コロンのルールが回る頃には二重コロンは消えています。
- ワイルドカードなし——old_text は字面どおりに一致し、「*」と「?」は本来のアスタリスクと疑問符を探します。パターンの火力は「検索と置換」、Sheets では REGEXREPLACE にあります。
- 改行は CHAR(10):=SUBSTITUTE(A2, CHAR(10), " ") で折り返しセルを 1 行に平らにします——必要なら後で本物の数値へ変換します。
- 再利用できる掃除パイプライン:SUBSTITUTE でノイズを、TRIM で残りを、VALUE で数値を——3 列が毎回の再インポートに耐えます。
SUBSTITUTE をインポートシートの免疫系として扱います:生データは汚れたまま着地し、substitute 列が着地と同時に掃除し、下流の数式はすべてきれいな版を食べる——誰も生の列を手で編集しなくなります。
関連ツール
関連関数
よくある質問
SUBSTITUTE は Excel で何をしますか?
テキストの断片を、現れるすべての場所で別のテキストに置き換えます:=SUBSTITUTE(A2, "-", " ") はすべてのハイフンを空白に替えます。省略可能な instance_num 引数で、特定の 1 か所だけを変えることもできます。
SUBSTITUTE は大文字小文字を区別しますか?
区別します——old_text は大文字小文字まで一致する必要があり、無視するスイッチはありません。一回きりの大文字小文字を区別しない掃除なら「検索と置換」ダイアログを使います。あちらは大文字と小文字を区別するチェックボックス方式です。
2 番目の出現だけを置き換えるには?
4 番目の引数に 2 を渡します:=SUBSTITUTE(A2, "/", "-", 2)。出現は左から右へ数え、他のマッチは無傷です。1 以上の任意の数が使え、0 や負の数は #VALUE! を返します。
セルから空白を全部削除するには?
何もないもので置き換えます:=SUBSTITUTE(A2, " ", "")。空の new_text がセル内のすべての空白を消します。数値に見える結果は、後で VALUE で包んで掃除済みテキストを再び計算可能にします。
SUBSTITUTE と REPLACE の違いは?
SUBSTITUTE は場所を問わずテキストを狩り、REPLACE は固定の位置と長さを上書きします(=REPLACE(A2, 4, 2, "XX"))。何を変えるか分かっているなら SUBSTITUTE、正確な場所が分かっているなら REPLACE です。
SUBSTITUTE が #VALUE! を返すのはなぜ?
4 番目の引数 instance_num が 0 か負の数だからです。1 以上にするか、全部置き換えるなら丸ごと省略します。実際の出現数を超えてもエラーではありません——テキストがそのまま返るだけです。
SUBSTITUTE は Google Sheets で使えますか?
使えます——名前・引数・大文字小文字を区別する字面一致がすべて同じです。Sheets はパターン置換の REGEXREPLACE と、正規表現対応の「検索と置換」ダイアログを追加しています。
自分のファイルで試す準備はできましたか?
Excelの一括検索と置換を開く — 無料