Excel で文字列に含まれる不要なスペースを削除する方法


あちこちで集めてきたデータを Excel で表にしようとしたら、前後にスペースが入っているデータもあって扱いづらいです。不要なスペースを一括で削除できませんか?

以前「検索と置換」機能ですべてのスペースを削除する方法は教えたわよね?

はい。でも、今回は単語間にあるスペースだけ残したい、例えば「名前」のデータで「姓」と「名」との間にあるスペースは削除したくないのです。


そうなのね。だったら「TRIM関数」を使うといいわ。

「TRIM関数」で残すスペースを半角か全角かでそろえることはできますか?

「TRIM関数」だけではできないから「検索と置換」機能も使うか「SUBSTITUTE関数」と組み合わせれば可能よ。
説明
Excel で文字列に含まれるスペースを「すべて削除」する方法は以前、紹介しました。
おさらいすると「検索と置換」機能を使って「検索する文字列」を「スペース」として、「置換後の文字列」には何も入力しないで「すべて置換」する方法でした。

特に「検索と置換」機能の「オプション」設定で「半角と全角を区別する」にチェックがなければ「全角スペース」も「半角スペース」も一緒に「入力なし」に置換されるので、文字列に含まれるスペースは「すべて削除」できるわけです。
ただし「すべて削除」ではなく、文字列に含まれる単語間の「スペース」は残したい、例えば「名前」のデータで「姓」と「名」の間に「スペース」があるなら、その「スペース」は削除せずに残したい、といったケースが考えられます。
そんなときに使えるのが「TRIM関数」で書式はシンプルです。
TRIM(文字列)
これで「文字列」に含まれる単語間のスペースは1つずつだけ残し、「文字列」の前後や重複する不要なスペースはすべて削除することができます。
例えば次のように前後に不要な「全角スペース」や「半角スペース」を含む「名前」のデータがあるとしましょう。
「A1」に「 あおい たろう」
「A2」に「いけだ じろう 」
「A3」に「 さかい さぶろう 」
不要なスペースを削除して表示するセルに「TRIM関数」を使って
「B1」に「=TRIM(A1)」
「B2」に「=TRIM(A2)」
「B3」に「=TRIM(A3)」
と入力して実行すれば
「B1」は「あおい たろう」
「B2」は「いけだ じろう」
「B3」は「さかい さぶろう」
となり、前後の不要なスペースはすべて削除されます。

ただし「TRIM関数」では1つだけ残った「単語間のスペース」を「全角」か「半角」かを判別したり、どちらかにそろえたりすることはできません。
そこで、例えばすべて「全角スペース」にそろえるなら「TRIM関数」で出力された文字列に含まれるスペースを整えます。
出力した文字列を「検索と変換」するには関数を含まない「値だけ」にする必要があります。
具体的には先ほどの「TRIM関数」による文字列なら「B1」から「B3」までコピーして、「C1」から「C3」に「値だけ貼り付け」します。

この「値だけ」の「C1」から「C3」までを選択して、「検索と置換」で「半角スペース」を検索して「全角スペース」に置換すればいいわけです。

あるいは検索文字列を置換する「SUBSTITUTE」関数を使っても可能です。
SUBSTITUTE(文字列,検索文字列,置換文字列,置換対象)
つまり、先ほど「B1」は「=TRIM(A1)」にしましたが、それを
=SUBSTITUTE(TRIM(A1)," "," ")
とするのです。

これで「文字列」から余分なスペースを削除し、さらに単語間に1つだけ残ったスペースを「全角スペース」にそろえることができました。
執筆者: 林 俊二