総務担当者や経理担当者にとって、他部署やWebシステムからコピー&ペーストしてきたデータに含まれる「見えない空白」ほど厄介なものはありません。TRIM関数を使えば前後の余分なスペースや連続するスペースはきれいに整えられますが、実はTRIMには大きな落とし穴があります。それが「全角スペースは消えない」という仕様です。見た目には空白が消えたように見えても、実際には全角スペースがしぶとく残っていて、VLOOKUPやCOUNTIFSで一致しない、重複しているはずのデータが重複チェックに引っかからない、といったトラブルの原因になります。この記事ではTRIMとSUBSTITUTEを組み合わせて全角スペースまで確実に除去する方法と、実務でのよくある使用シーンを解説します。
TRIMが「半角スペースしか消せない」仕様であることを理解する
TRIM関数は、文字列の先頭と末尾にある余分なスペースを取り除き、さらに単語の間に連続して入っているスペースを1つにまとめてくれる関数です。他システムからエクスポートしたデータや、Webページ・PDFからコピーしてきたテキストには、目に見えない余分なスペースが紛れ込んでいることが多く、TRIMはそうしたデータを整形する定番の関数として広く使われています。ところが、TRIMが取り除いてくれるのはあくまで半角スペースだけです。日本語の入力でよく使われる全角スペースは、TRIMをかけても一切削除されません。セルの表示上は空白がなくなったように見えても、実際には全角スペースがそのまま残っており、この「見えているのに数式上は消えていない」状態が、後述するVLOOKUPやCOUNTIFSの不一致トラブルの温床になります。
例:A1に「 山田 太郎 」(前後・途中に全角スペースを含む文字列)が入っている場合、TRIMをかけても全角スペースは残ったまま。半角スペースだけを想定した処理では取り切れません。
SUBSTITUTE関数で全角スペースまで確実に除去・統一する
SUBSTITUTE関数は、文字列の中から指定した文字を検索し、別の文字列に置き換える関数です。引数は「対象文字列」「検索文字列」「置換文字列」「置換対象(省略可)」の順に指定し、置換対象を省略するとヒットしたすべての文字が置き換えられます。全角スペースはTRIMの対象外ですが、SUBSTITUTEを使えば「全角スペースを検索して、空文字列に置き換える」という指定ができるため、TRIMと組み合わせることで半角・全角どちらのスペースも確実に取り除くことができます。
まずTRIMで半角スペースの前後・連続分を整えたうえで、SUBSTITUTEで全角スペースを検索し空文字列に置き換えます。VLOOKUPやCOUNTIFSの照合キーとして使うデータは、スペースを完全にゼロにしてしまうこの形が安全です。表示用に区切りとしてスペースを残したい場合は、=TRIM(SUBSTITUTE(A1," "," "))のように、全角スペースを先に半角スペースへ変換してからTRIMで整形する順番も便利です。
実務でのよくある使用シーン
総務担当者であれば、他部署やグループ会社から送られてくる社員名簿・取引先名簿をVLOOKUPの検索キーとして使う前に、TRIMとSUBSTITUTEでスペースを完全にそろえるクレンジング作業が欠かせません。氏名の姓と名の間に全角スペースが入っているか、半角スペースが入っているか、あるいはスペースなしかがファイルごとにバラバラなことが多く、そのままVLOOKUPすると一致しない行が大量に発生します。経理担当者であれば、Webの受発注システムや会計システムからダウンロードした取引先データの表記ゆれ――全角・半角の混在、電話番号のハイフン(-と-)の不統一――を、SUBSTITUTEで一括統一してから突合作業を行う場面が典型的です。=SUBSTITUTE(A1,"-","-")のように全角ハイフンを半角に置き換えるだけでも、他システムとの照合精度は大きく向上します。営業事務担当者であれば、複数の担当者が入力した見積書控えの品名欄をコピーして集計表に貼り付ける際、全角・半角スペースが混在したままSUMIFSの条件に使ってしまい、本来合算されるべき品目が別々に集計されてしまうトラブルを防ぐためにも、あらかじめSUBSTITUTEで空白を統一しておく習慣が役立ちます。
TRIM・SUBSTITUTEでよくあるエラー・トラブルと対処法
TRIMで整形したはずのデータをVLOOKUPの検索値に使っているのに#N/Aが返ってくる場合、検索対象の文字列に全角スペースが残っているケースが非常に多くあります。
対処法として、検索値をTRIMだけでなくSUBSTITUTE(TRIM(A1)," ","")のように全角スペースの置換も加えることで、見た目には同じでも一致しなかった行を解消できます。
重複チェックのためにCOUNTIFSやCOUNTIFで件数を数えても、本来2件あるはずの同一データが「1」としてカウントされてしまうことがあります。これは、一方のセルにだけ全角スペースが含まれているために、Excel上は「違う文字列」として扱われているのが原因です。
対処法として、比較用の作業列にSUBSTITUTE(TRIM(A1)," ","")で空白を完全に除去した文字列を作り、その列同士で重複チェックを行うと、見えない空白に惑わされずに正しい件数を集計できます。
SUBSTITUTE関数は「対象文字列」「検索文字列」「置換文字列」の順に引数を指定しますが、この順番を逆にしてしまい、置換したい文字列自体を検索対象に指定してしまうミスがよく見られます。
対処法は、必ず「元の文字列(対象)→探したい文字(検索)→置き換えたい文字(置換)」の順で引数を並べることです。慣れないうちは数式バーで各引数にカーソルを合わせ、ツールチップに表示される引数名を確認する習慣をつけましょう。
初心者がつまずきやすいポイントとコツ
- TRIMだけで全角スペースも消えると思い込まない。TRIMが処理するのは半角スペースのみで、全角スペースの除去には別途SUBSTITUTEを組み合わせる必要があります。
- SUBSTITUTEの引数の順番(対象文字列, 検索文字列, 置換文字列)を正確に覚える。「何を」「何から」「何に」変えるのかを声に出して確認すると間違えにくくなります。
- 全角スペースと半角スペースは見た目では判別しにくい。LEN(A1)で文字数を数えたり、A1の一部をCODE関数やUNICODE関数で確認したりすると、どちらのスペースが紛れ込んでいるかを客観的に判断できます。
- SUBSTITUTEの第4引数(置換対象)を省略すると該当するすべての文字が置換される。文字列中の特定の1か所だけを置き換えたい場合は、第4引数に何番目に出現する文字かを数値で指定する必要があります。
まとめ
TRIM関数は非常に便利ですが、「半角スペースしか取り除けない」という制約を知らずに使うと、全角スペースが原因のVLOOKUP不一致やCOUNTIFSの重複漏れに気づかないまま作業を進めてしまうことがあります。全角スペースまで確実に処理したい場合は、SUBSTITUTE(TRIM(文字列)," ","")のようにSUBSTITUTEを組み合わせ、照合や重複チェックの前に文字列を完全にそろえておくことが重要です。他部署やシステムから届いたデータをそのまま使わず、一度クレンジングを挟む習慣をつけるだけで、原因不明の不一致エラーはぐっと減らせます。数式を一から組み立てるのが不安な方は、下のツールで日本語の空欄を埋めるだけで数式を作成できます。
よくある質問
関連記事
- CONCAT・TEXTJOIN関数で文字列を結合する方法
- LEFT・RIGHT・MID関数で文字列を切り出す方法
- UPPER・LOWER・PROPER関数の使い方
- LEN関数で文字数を数える方法|入力規則との組み合わせと全角スペース・改行のよくある落とし穴