他部門からのデータやインターネットからのデータを
エクセルにコピペした際に、スペースが多用されていて、
困ったケースはありませんか?
今回はTRIM関数を使った処理にいてご紹介します。
TRIM関数を使うことで、文字列の前後に入ったスペースや、
文字列間に複数挿入されたスペースを整理できます。
なお、この方法は元の文字列を残したまま
別のセルで余分なスペースを削除した文字列を作成したい場合に有効です
元の文字列を直接操作する場合は、先に下記ページをご参考ください

文字列に含まれる余分なスペースを削除した文字列を別セルに作成する方法
・TRIM関数を使った余分なスペースの処理について
・TRIM関数と他の関数をかけ合わせた応用方法について
TRIM関数とは
TRIM関数とは、セル内の文字列に含まれるスペースを以下の方法で処理する関数です
・文字列の前後のスペース
→不要とみなして削除します
・文字列の間に存在するスペース
→スペースが1個の場合は必要とみなして残します
→スペースが2個以上の場合は1個を残して削除します
関数は次のように表します
=TRIM(文字列)
例題でTRIM関数のイメージをつける
それでは、TRIM関数がどのような処理になるのか
数パターンの例題で見ていきましょう
パターン① 文字列の前にスペースがある場合
次の図で、文字列の前にスペースが入っている場合に
TRIM関数で除去できるか見てみましょう

まず、A列に元となる文字列を入れてみました
文字列の前にスペースを入れましたが、
見づらいので、左詰めでA列は表示し、
スペースの数をB列に書いてます
C列がTRIM関数の使用結果です
C列にセットされている関数は、
D列に注記しておきました
結果は、文字列の前のスペースは、
全角半角問わず、除去されるのが分かります
このケースで実際、社内でたまに見る例をご紹介します

上記のような資料が回ってきて、
集計の前処理が面倒なケースありませんか?
パターン② 文字列の後にスペースがある場合
今度は文字の後にスペースが入っている場合です
こちらは見落としやすくて非常に厄介です
使い方はパターン①と同様ですので結果だけご紹介します
(A列とC列は右詰めにしました)

TRIM関数で一掃できますね
パターン③ 文字と文字の間にスペースが入っている場合
TRIM関数のクセを理解する上で、
このパターンが一番重要かもしれません
まずは下図をご覧ください

規則性は見えましたか?
・文字列の間にスペースが1個の場合は残します
・2個以上のスペースがつながっている場合は1個だけ残します
・残すスペースは最初のスペースです
→スペースが、半角、全角の順にあった場合、半角となります
ここまでがTRIM関数の基本です
全角、半角スペースを統一する方法
例題でも見たように、
TRIM関数だけでは半角と全角のスペースを上手く整理できません
そこで、応用編としてSUBSTITUTE関数と組み合わせる方法をご紹介します
SUBSTITUTE関数とは
文字列内の特定の文字を置き換える関数です
=SUBSTITUTE(文字列, 検索文字列, 置換文字列, 置換対象)
なお、置換対象は省略可能です(今回は使いません)
SUBSTITUTE関数にTRIM関数を入れ子にすることで、
文字列間のスペースが半角でも全角でも気にすることなく、
どちらかに統一が可能です

上図でイメージを掴んでいただければと思いますが、
C列の結果が全て全角スペースに統一できています。
=SUBSTITUTE(文字列, 検索文字列, 置換文字列)
文字列→TRIM関数の結果
検索文字列→半角スペース
置き換え文字列→全角スペース
以上により、全角スペース置き換えることで全て全角スペースとなります
TRIM関数で消せないケースについて
私自身は未経験ですが、
消せないスペースというのが存在するようですので、
対処法を備忘しておきます
ネット上からエクセルにコピペした際に
見えない空白が存在することがあります
それは、文字コード160と呼ばれるもので、
HTMLで使用されるNBSP(ノーブレークスペース)というものです
仮にA1セルに見えないスペースがが存在した場合、
下記の関数で対応が可能です
=TRIM(CLEAN(SUBSTITUTE(A1,CHAR(160),” “)))
最後に
いかがだったでしょうか?
余分なスペースは無いに越したことはないですが、
他部署やネット上からのデータについて、
前処理の方法として使えるケースはあるかもしれません
お役に立てれば、幸いです
コメント