Excelで余分なスペースを削除する方法!TRIMとCLEANの使い分けと全角空白の対処法!

Excelで余分なスペースを削除する方法!TRIMとCLEANの使い分けと全角空白の対処法!
Excelで余分なスペースを削除したいときはないでしょうか。

けど、そんな中で悩むことは、

・氏名の前後に半角スペースが残って並びがそろわない
・名前に全角スペースが混ざっていてTRIM関数で消えない
・セル内の改行や見えない制御文字が残って検索や並べ替えがうまくいかない

ですよね。

今回はそんなお悩みを解決する

・Excelで余分なスペースを削除する方法(TRIM・SUBSTITUTE・CLEAN関数とVBA)

についてまとめます!

完成イメージ

完成イメージ

上の画像が完成形です。「仕上げ」の列に、余分な半角スペース・全角スペース・改行がすべて取り除かれた文字列が入りました。

余分なスペースや改行が残っていると、見た目は同じなのに検索・並べ替え・VLOOKUPでの照合がうまくいかない原因になります。
今回は
・TRIM関数で前後の半角空白と連続する空白を1つにまとめる
・SUBSTITUTE関数で全角空白や改行を置き換える
・CLEAN関数で改行などの制御文字を削除する

この3つを組み合わせて、氏名と商品名をきれいに整える方法をゴールにします。

なお、全角空白がTRIMで消えない理由や、うまくいかないときの対処法(トラブルシュート)、VBAで一括処理する方法もあわせてご紹介します。
早速実装して試してみましょう!

上の画像が完成形です。「仕上げ」の列に、余分な半角スペース・全角スペース・改行がすべて取り除かれた文字列が入りました。

STEP1. 元データを用意する

まずは整形したいデータを用意します。
今回はシステムから取り込んだ名簿と商品リストを使います。
A列がNo、B列が氏名、C列が商品名です。

一見ふつうに見えますが、
B列の氏名には前後の半角スペースや名前の間の全角スペースが混ざっています。
C列の商品名には、Alt+Enterで入ったセル内の改行が残っているものがあります。
まずはこの汚れた状態を確認しておきましょう。
余分なスペースが入った元データ

下の表をコピーして、Excelのシートに貼り付けるとそのまま試せます。

No 氏名(元データ) 商品名(元データ) 元の文字数 TRIM後 TRIM後文字数 仕上げ(氏名) 仕上げ(商品名)
1 佐藤 太郎 ノートPC
2 鈴木 花子 モニター 27型
3 高橋 一郎 キーボード
(日本語配列)
4 田中 美咲 マウス ワイヤレス
5 伊藤 健 プリンタ
(A4対応)
6 渡辺 直樹 ノートPC 14型
(SSD 512GB)
7 山本 結衣 モニター 24型
8 中村 翔太 キーボード
(テンキー付)
9 小林 さくら マウス
10 加藤 大輔 プリンタ
(インク付属)

※ Webの仕様上半角スペースや改行が入らない場合がありますので、Excelへ張り付けた後手動入力してください。。

空白の種類と使う関数

ひと口に「空白」といっても4種類あり、消せる関数が違います。

空白の種類 例 使う関数
半角スペース(前後・連続) 「␣佐藤␣␣太郎␣」 TRIM
全角スペース 「鈴木 花子」 SUBSTITUTEで半角に置換→TRIM
改行(セル内) Alt+Enterで入った改行 CLEAN
タブ コピペで混ざるタブ CLEAN(またはSUBSTITUTE)
TRIMで消せないもの
TRIMが消せるのは半角スペースだけです。
全角スペースは残ってしまうので、SUBSTITUTEで半角に置き換えてからTRIMします(STEP5で解説)。

STEP2. TRIM関数で前後の半角空白と連続空白を削除する

もっとも基本になるのがTRIM関数です。
TRIM関数は、文字列の前後にある半角スペースを取り除き、間にある連続した半角スペースを1つにまとめる関数です。

D列に「元の文字数」、E列に「TRIM後」、F列に「TRIM後の文字数」を用意しました。

TRIMの効果は「文字数」で確認する(LEN関数)

TRIMで空白が消えたかどうかは、見た目だけでは分かりにくいことがあります。
そこで文字数を数えるLEN関数を使って、数字で確認しましょう。

関数 式 意味
LEN =LEN(B2) 文字数を返す(空白も1文字と数える)

D2セルを選んで、次の式をそのままコピー&貼り付けしてください。

=LEN(B2)

D2セルに入れましょう。

入力できたら、D2セルの右下をD11までドラッグしてコピーします。
すると元データの文字数が全員分表示されます。

2行目の佐藤さんは7文字です(「 佐藤 太郎 」=前後に半角スペース)。
次にTRIM後の文字数(F列)と見比べると、何文字減ったかが数字で分かります。

2行目(佐藤太郎さん)を見てください。
元データは前後に半角スペースが入っていましたが、E列のTRIM後では前後の空白が消えています。
D列とF列の文字数を見比べると、7文字から5文字に減っていることが分かりますね。

6行目(伊藤健さん)は、名の間に半角スペースが2つ入っていました。
TRIM後は1つにまとまっているので、こちらも確認してみてください。
なお、サンプルの氏名は左詰めにしてあるので、前後の空白がそのまま見えます。
空白の数はD列(元)とF列(TRIM後)の文字数で確認してください。

元の文字数とTRIM後の文字数の差(削減)

「削減」の列を見ると、何文字の空白が消えたかが一目で分かります。
TRIM関数を適用した結果

STEP3. TRIM関数を入力する画面

=TRIM(B2)

E2セルに入れましょう。
入力中は関数の引数のヒントが表示されるので、引数の順番を確認しながら進められます。
あとはE2セルを下のE11セルまでコピーすれば、氏名の列すべてに適用できます。
TRIM関数の入力画面

STEP4. TRIMでは全角スペースが整わない

ここがつまずきやすいポイントです。
TRIM関数が取り除けるのは半角スペースだけです。
日本語入力で入ってしまった全角スペース「 」を半角スペースに変えることはできません。

9行目(中村翔太さん)を見てください。
B列は「中村 翔太」で、名の間に全角スペースが1つ入っています。
E列のTRIM後も「中村 翔太」のままで、D列とF列の文字数はどちらも5で変わりません。
前後に余分な空白がないため、TRIMでは何も起きないのです。

このように、名前と名前の間に入った全角スペースはTRIMでは整いません。
これを解決するのが、次のSUBSTITUTE関数です。
TRIMでは全角スペースが半角にならない

STEP5. SUBSTITUTE関数で全角スペースを置き換える

全角スペースを整えるにはSUBSTITUTE関数を使います。

=TRIM(SUBSTITUTE(CLEAN(B2)," "," "))

G2セルに入れましょう。
SUBSTITUTEで全角スペースを半角スペースに置き換えてから、TRIMで前後と連続を整える流れです。

するとG列の「仕上げ(氏名)」は、全角スペースもきれいに整います。
9行目(中村翔太さん)は、E列のTRIM後が「中村 翔太」でしたが、G列では「中村 翔太」になりました。
3行目(鈴木花子さん)も同じように整っていますね。

なお、名前の間の全角スペースを完全に削除したいときは、置換後の文字を半角スペースではなく空文字にします。

=SUBSTITUTE(B2," ","")

このように書きます。
SUBSTITUTEで全角スペースを整えた結果

STEP6. CLEAN関数で改行などの制御文字を削除する

次は商品名の改行です。
C列の商品名には、Alt+Enterで入ったセル内改行が残っています。
4行目の商品名は「キーボード」の下に「(日本語配列)」が続いており、セルの中で2行に分かれています。

改行の正体は制御文字のCHAR(10)で、目に見えないため厄介です。
こうした制御文字を取り除くのがCLEAN関数です。
CLEAN関数は、改行やタブなど印刷できない制御文字(CHAR 1〜31)をまとめて削除します。

ただし、CLEAN関数は半角スペースや全角スペースは削除できません。
スペースはTRIMとSUBSTITUTE、制御文字はCLEANと、役割を分けて覚えておきましょう。
商品名に残ったセル内改行

CLEAN関数を入力する画面

H2セルに、3つの関数を組み合わせた数式を入力します。

=TRIM(SUBSTITUTE(CLEAN(C2)," "," "))

内側からCLEAN → SUBSTITUTE → TRIMの順に処理されます。
1本の数式にまとめておくと、あとから元データを修正しても結果が自動で追従します。
3つの関数を組み合わせた数式の入力画面

STEP7. 3つの関数を組み合わせて完成させる

最後に、TRIM・SUBSTITUTE・CLEANの3つを組み合わせます。
G列(仕上げ・氏名)とH列(仕上げ・商品名)に、仕上げの数式を入れてあります。
処理される順番は内側から次のとおりです。

①CLEANで改行などの制御文字を削除する
②SUBSTITUTEで全角スペースを半角スペースに置換する
③TRIMで前後の空白を削除し、連続する空白を1つにまとめる

この順番にすると、余分な半角スペース・全角スペース・改行をまとめて整えられます。
G列の氏名も、H列の商品名も、きれいにそろいましたね。
3つの関数を組み合わせた結果

TRIM・SUBSTITUTE・CLEANの使い分け

3つの関数はそれぞれ役割が違います。
消せるもの・消せないものを表にまとめました。

関数 消せるもの 消せないもの
TRIM 前後の半角スペース/連続する半角スペース(1つにまとめる) 全角スペース・改行などの制御文字
SUBSTITUTE 指定した文字(全角スペースや改行など) 指定していない文字・半角スペースの連続
CLEAN 改行やタブなど印刷できない制御文字(CHAR 1〜31) 半角スペース・全角スペース
3つの組み合わせ 余分な半角スペース・全角スペース・改行をまとめて削除 —
POINT
「前後の半角スペース」ならTRIM、
「全角スペース」ならSUBSTITUTE、
「改行などの制御文字」ならCLEANが基本です。
迷ったら =TRIM(SUBSTITUTE(CLEAN(セル)," "," ")) の1本でまとめて整えられます。

VBAで選択範囲を一括クリーニングする

件数が多く、毎回同じ作業をするなら、VBAでまとめて処理するとラクです。
Alt+F11でVBAエディターを開き、標準モジュールに次のコードを貼り付けます。

Sub CleanText()
    Dim r As Long, lastRow As Long
    lastRow = Cells(Rows.Count, 2).End(xlUp).Row
    For r = 2 To lastRow
        Cells(r, 2).Value = Application.Trim( _
            WorksheetFunction.Substitute( _
                Application.Clean(Cells(r, 2).Value), " ", " "))
    Next r
End Sub

タカヒロ

タカヒロ
「Cells(r, 2)」の 2 はB列という意味です。
処理したい列に合わせて数字を変えてみてくださいね。
実行すると、数式ではなく結果の文字列がそのまま書き込まれます。
元のデータを残しておきたいときは、先にシートをコピーしてから実行しましょう。

うまくいかないときの対処法(トラブルシュート)

実際に試すと、思ったようにいかないこともあるかもしれません。
よくあるつまずきと対処法をまとめました。

症状 原因 対処
TRIMしても全角スペースが消えない TRIMが対象にするのは半角スペースだけ SUBSTITUTE(セル,” ”,” “)で半角に置き換えてからTRIMする
改行が残ってしまう 改行は制御文字(CHAR(10))で、TRIMの対象外 CLEANで削除する/SUBSTITUTE(セル,CHAR(10),””)で置換する
名の間のスペースまで消えてしまった SUBSTITUTEの置換後の文字を空文字にしている 区切りを残したいときは置換後を半角スペースにする
見た目は空いているのに文字数が多い セルにスペースや制御文字が残っている =LEN(セル) で文字数を確認し、数式で取り除く
数値が左寄せのままで計算できない スペース付きの数字は文字列として扱われる 整形したあとに=VALUE(セル) で数値に変換する
元の数式が消えてしまった 「値の貼り付け」で結果だけを貼っている 元データを残す列に数式を入れておく/シートをコピーしてから作業する

関数の説明

今回使う4つの関数の概要です。
文字の整形でよく使う関数なので、違いを押さえておきましょう。

TRIM関数(トリム)

書式 =TRIM(文字列)
できること 文字列の前後にある半角スペースを削除し、間にある連続した半角スペースを1つにまとめます。
戻り値 整形された文字列
こんなときに 取り込んだデータの前後に余分な半角スペースが入っているとき。
注意 全角スペースを半角に変えることはできません。語間の1つの半角スペースは残ります。
=TRIM(B2)

SUBSTITUTE関数(サブスティチュート)

書式 =SUBSTITUTE(文字列, 検索文字列, 置換文字列, [置換回数])
できること 文字列の中から指定した文字を探して、別の文字に置き換えます。置換回数を指定すると、その回数だけ置き換えられます。
戻り値 置き換え後の文字列
こんなときに 全角スペースを半角にしたいとき、特定の記号を削除したいとき。
注意 置換後の文字を“”(空文字)にすると、その文字は削除されます。
=SUBSTITUTE(B2," "," ")

CLEAN関数(クリーン)

書式 =CLEAN(文字列)
できること 改行やタブなど印刷できない制御文字(CHAR 1〜31)を削除します。
戻り値 制御文字を取り除いた文字列
こんなときに セル内改行やタブが残っていて、検索・並べ替えがうまくいかないとき。
注意 半角スペース・全角スペースは削除できません。CHAR(10)の改行は削除されます。
=CLEAN(C2)

LEN関数(レン)

書式 =LEN(文字列)
できること 文字列の文字数を数えます。
戻り値 文字数(数値)
こんなときに 整形で何文字減ったかを確かめたいとき。
注意 スペースも1文字として数えます。目に見えない空白の確認に便利です。
=LEN(B2)

完成

「仕上げ(氏名)」と「仕上げ(商品名)」の列に、余分な半角スペース・全角スペース・改行がすべて取り除かれた文字列が入りました。
D列の元の文字数とF列のTRIM後文字数を見比べると、余分な空白が減っていることも確認できます。
文字の並びがそろったので、検索や並べ替え、VLOOKUPでの照合も正確になります。
完成した表

さいごに

いかがでしょうか。

今回は、

・Excelで余分なスペースを削除する方法(TRIM・SUBSTITUTE・CLEAN関数とVBA)

についてまとめました。

まずは今回のサンプル表で、ぜひ一度試してみてください。
TRIMで整わない全角スペースと改行は、SUBSTITUTEとCLEANで対応するのがポイントです。
この3つを組み合わせておけば、取り込んだデータの整形がぐっとラクになりますよ。
また、他にも便利なExcelの時短テクニックがありますので、よろしければご参照頂ければと思います。

ぜひ試してみてください。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。






コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA ImageChange Image