概要
「目で見ると空白にしか見えないのに、TRIM しても消えない…」
「コピペしたデータの前後に“全角スペース”が入っていて邪魔」
こういうときの犯人はたいてい 全角空白(全角スペース:’ ’) です。
TRIM は半角スペースしか相手にしてくれないので、全角空白は自分で置き換える必要があります。
そこで活躍するのが SUBSTITUTE 関数です。
「全角スペースを“空文字”に置き換える=削除する」という発想で使います。
基本:SUBSTITUTE で文字を置き換える仕組み
SUBSTITUTE 関数の書式
=SUBSTITUTE(文字列, 置き換え前, 置き換え後, [置き換える回数])
- 文字列
置き換えを行いたい元の文字列(セル参照でも、直接文字列でもOK) - 置き換え前
「消したい(置き換えたい)文字」。
今回は 全角スペース “ ” を指定します。 - 置き換え後
何に置き換えるか。
「削除」したいなら 空文字 “” を指定します。 - 置き換える回数(省略可)
何個目を置き換えるか。省略すると「全部」が対象になります。
全角空白を“全部削除”する基本テンプレート
もっともよく使う形
セル A2 に、全角スペースが混ざった文字列が入っているとします。
この「全角スペース」をすべて削除したい場合の式はこうなります。
=SUBSTITUTE(A2, " ", "")
ポイントは「” ”」が 全角スペース であること。
キーボードで打つときは、
日本語入力でスペースキーを押すと「全角スペース」が入ります。
この式で、A2 の中にある全角スペースはすべて「空文字」に置き換えられ、
結果として 全角空白が完全に削除 されます。
全角空白と半角空白の“両方”をきれいにする
TRIM と SUBSTITUTE の組み合わせ
実務では、
「全角スペースも半角スペースもごちゃ混ぜ」
というケースが多いです。
その場合の定番パターンは、
- 全角スペースを削除(SUBSTITUTE)
- 残った半角スペースを整える(TRIM)
という2段構えです。
テンプレートは次の形になります。
=TRIM(SUBSTITUTE(A2, " ", ""))
動きはこうです。
SUBSTITUTE(A2, " ", "")
→ 全角スペースを全部削除した文字列を作るTRIM(その結果)
→ 先頭・末尾の半角スペース削除、途中の連続半角スペースを1つに整形
この一式で、「全角も半角も“変な空白”をだいたいきれいにする」ことができます。
応用:文中の全角空白だけ削除して“詰めたい”
文字と文字の間の全角スペースをなくす
例えば A2 に
「山田 太郎」
という文字列が入っているとします(姓と名の間に全角スペース)。
これを「山田太郎」(間の全角スペースなし)にしたい場合は、
単純にこう書くだけです。
=SUBSTITUTE(A2, " ", "")
これで「山田太郎」に変わります。
「見た目は普通のスペースなのに、なぜか LEFT や FIND が思った通りに動かない」
というとき、間に全角スペースが潜んでいることがよくあります。
応用:全角空白を「半角空白1つ」にしたい
全角スペースを“普通のスペース”に置き換える
「全角スペースを完全になくす」のではなく、
「半角スペースに統一したい」ケースもあります。
その場合は、置き換え後を " "(半角スペース)にします。
=SUBSTITUTE(A2, " ", " ")
さらに TRIM と組み合わせると、
=TRIM(SUBSTITUTE(A2, " ", " "))
- 全角スペース → 半角スペースに統一
- TRIM → 先頭・末尾のスペース削除、途中の連続スペースを1つに整理
という形で、「空白の種類を揃えつつ、きれいに整形」できます。
応用:VLOOKUP 前の“お掃除”として使う
一致しない原因が全角空白のときの対処
VLOOKUP や XLOOKUP がうまく一致しない原因の定番が、
「見えない全角空白」です。
検索値のセル(例:A2)に対して、
事前に全角スペースを削除してから検索するようにします。
例:
=VLOOKUP(SUBSTITUTE(A2, " ", ""), 検索範囲, 列番号, FALSE)
それでもダメなときは、
全角スペース削除+TRIM のフルコースにします。
=VLOOKUP(TRIM(SUBSTITUTE(A2, " ", "")), 検索範囲, 列番号, FALSE)
目に見えない空白のせいで「合っているのに一致しない」問題を防げます。
例題
問題1
A2 に「山田 太郎」という文字列が入っています(姓と名の間に全角スペース)。
この全角スペースを削除して「山田太郎」にする式を書いてください。
=SUBSTITUTE(A2, " ", "")
問題2
A2 の文字列に含まれる全角スペースをすべて削除し、さらに前後や途中の不要な半角スペースも整えたいです。
SUBSTITUTE と TRIM を組み合わせた式を書いてください。
=TRIM(SUBSTITUTE(A2, " ", ""))
問題3
A2 に「 Excel 関数 」という文字列が入っています(前後および途中に全角スペース)。
全角スペースをすべて半角スペースに統一し、前後の余分なスペースを削除して
「Excel 関数」という形に整えたいです。式を書いてください。
=TRIM(SUBSTITUTE(A2, " ", " "))
問題4
A2 の値を VLOOKUP で検索したいのですが、全角スペースが混じっていてうまく一致しません。
検索値側で全角スペースを削除してから VLOOKUP する式を書いてください。
(検索範囲、列番号、FALSE はそのままとします)
=VLOOKUP(SUBSTITUTE(A2, " ", ""), 検索範囲, 列番号, FALSE)
問題5
A2 の文字列に含まれる全角スペースの“み”を削除し、結果を B2 に表示したいです。
SUBSTITUTE を使った B2 の式を書いてください。
=SUBSTITUTE(A2, " ", "")
全角空白問題のほとんどは、
この 1 行で解決できます。
=SUBSTITUTE(セル, " ", "")
そして、「全角も半角もまとめてきれいにしたい」ときは、
=TRIM(SUBSTITUTE(セル, " ", ""))
この 2 パターンを“型”として覚えておくと、
見えない空白に振り回されることが一気に減ります。
