概要
「電話番号からハイフンだけ消したい」
「品番から『#』『-』『/』などの記号を全部取りたい」
「数字と文字は残して、記号だけきれいに落としたい」
こういうときに一番よく使うのが SUBSTITUTE 関数で“記号を空文字に置き換える”テクニックです。
ポイントはとてもシンプルで、
「消したい記号を “”(空文字)に置き換える=削除する」
と考えることです。
SUBSTITUTE の基本と「削除」の考え方
SUBSTITUTE の基本形は次の通りです。
=SUBSTITUTE(文字列, 置き換え前, 置き換え後)
記号削除で使うときは、
=SUBSTITUTE(文字列, "消したい記号", "")
と書きます。
例えば、A2 に「03-1234-5678」という電話番号が入っていて、
ハイフン「-」だけ消したい場合はこうです。
=SUBSTITUTE(A2, "-", "")
結果は「0312345678」になります。
「- を何にもないもの(空文字)に置き換える」から、見た目としては削除されたわけです。
よくある記号削除パターン
電話番号や郵便番号のハイフン削除
A2 に「03-1234-5678」が入っているとして、
ハイフンをすべて削除して数字だけにしたい場合。
=SUBSTITUTE(A2, "-", "")
結果は「0312345678」です。
同様に、郵便番号「123-4567」からハイフンを取りたいときも同じです。
=SUBSTITUTE(A2, "-", "")
結果は「1234567」になります。
「No.」「#」などの記号付き品番から記号を外す
A2 に「No.123」「#A-001」などが入っている場合、
「No.」や「#」を削除して、本体部分だけ取りたい、ということも多いです。
例えば「No.123」から「123」だけにしたい場合。
=SUBSTITUTE(A2, "No.", "")
「#A-001」から「A001」にしたい場合は、
「#」と「-」を削除します(複数記号なので後で詳しく)。
=SUBSTITUTE(SUBSTITUTE(A2, "#", ""), "-", "")
結果は「A001」です。
複数の記号をまとめて削除する
SUBSTITUTE は一回で「1種類」しか置き換えられません。
複数の記号を一気に落としたいときは、SUBSTITUTE を“重ねて”使います。
例1: 「-」「/」「#」を全部削除
A2 に「AB-12/3#X」という文字列があるとします。
ここから「-」「/」「#」をすべて削除して「AB123X」にしたい場合。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "-", ""), "/", ""), "#", "")
内側から順番に読んでいくと、
A2 の「-」を削除
→ 「/」を削除
→ 「#」を削除
という流れで、最終的に記号が全部消えます。
例2: カンマとピリオドを削除して数字だけに近づける
金額っぽい文字列「1,234.00円」が A2 にあるとします。
まず「円」を削除しつつ、カンマとピリオドも消して「123400」にしたい場合。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, ",", ""), ".", ""), "円", "")
このあと VALUE をかませれば「数値」として扱うこともできます。
他の関数との組み合わせ
VALUE と組み合わせて「記号付きの数字 → 本物の数値」に
記号を削除した結果を「数値」として計算したい場合は、
SUBSTITUTE の外側に VALUE をかぶせます。
例えば、A2 に「1,234円」が入っていて、
これを数値の 1234 にしたいとき。
=VALUE(SUBSTITUTE(SUBSTITUTE(A2, ",", ""), "円", ""))
内側で「,」と「円」を削除して文字列「1234」を作り、
VALUE で 1234(数値)に変換しています。
TRIM と組み合わせて、空白もついでに整える
記号を削除したあと、余計なスペースが残ることもあります。
その場合は最後に TRIM をかけると、前後の空白や連続スペースも整えられます。
例:「A – 001 #」から記号と空白をきれいにしたい場合。
=TRIM(SUBSTITUTE(SUBSTITUTE(A2, "-", ""), "#", ""))
TRIM が前後の空白や連続スペースを整理してくれるので、
「A001」のようにすっきりした文字列になります。
どの記号をどう消すかを考えるコツ
SUBSTITUTE を設計するときのポイントは、次のイメージです。
消したい記号を一個ずつ書き出す
それぞれを SUBSTITUTE(~, "記号", "") で消す
必要な数だけ SUBSTITUTE を重ねる
そして、
最後に TEXT / VALUE / TRIM などで、
「表示」や「計算」に使いやすい形に整える
という流れで考えると、
どんな記号の組み合わせでもだいたい対応できます。
例題
問題1
A2 に「03-1234-5678」という文字列が入っています。
この中からハイフン「-」をすべて削除して「0312345678」と表示したいです。
SUBSTITUTE を使った式を書いてください。
=SUBSTITUTE(A2, "-", "")
問題2
A2 に「#A-001」という文字列が入っています。
この中から「#」と「-」をすべて削除して「A001」と表示したいです。
SUBSTITUTE を2回重ねた式を書いてください。
=SUBSTITUTE(SUBSTITUTE(A2, "#", ""), "-", "")
問題3
A2 に「1,234円」という文字列が入っています。
この中から「,」と「円」を削除して「1234」という文字列にしたいです。
SUBSTITUTE を使った式を書いてください。
=SUBSTITUTE(SUBSTITUTE(A2, ",", ""), "円", "")
問題4
A2 に「1,234円」という文字列が入っています。
記号を削除したうえで、結果を数値 1234 として扱えるようにしたいです。
SUBSTITUTE と VALUE を組み合わせた式を書いてください。
=VALUE(SUBSTITUTE(SUBSTITUTE(A2, ",", ""), "円", ""))
問題5
A2 に「 A – 001 # 」という文字列が入っています(記号と空白が混ざっています)。
「-」と「#」を削除し、前後や途中の余計な空白も整えて「A001」と表示したいです。
SUBSTITUTE と TRIM を組み合わせた式を書いてください。
=TRIM(SUBSTITUTE(SUBSTITUTE(A2, "-", ""), "#", ""))
SUBSTITUTE を「記号 → 空文字」に使うパターンを覚えておくと、
電話番号、郵便番号、品番、金額文字列など、
実務で頻出の「記号だけ消したい」シーンをほぼ全部カバーできます。
まずは「1種類の記号削除」から慣れて、
必要に応じて SUBSTITUTE を重ねていく感覚を身につけていきましょう。
