エクセル関数辞典 エクセル関数辞典

TRIM・CLEAN関数の使い方|不要な文字を削除

TRIM CLEAN スペース削除 制御文字 データクレンジング Excel関数
広告スペース (article-top)

TRIM関数は余分なスペースを削除し、CLEAN関数は印刷できない制御文字を除去する関数です。外部システムからのデータ取り込みやCSVファイルのインポートでは、見えない文字が混入していることがあります。この記事では、2つの関数を使ったデータクレンジングの方法を実例とともに解説します。

TRIM関数の基本構文

=TRIM(文字列)

引数の説明

引数説明必須/任意
文字列スペースを除去する対象の文字列やセル参照必須

TRIM関数の動作

TRIM関数は以下の処理を行います。

  • 文字列の先頭にあるスペースを削除する
  • 文字列の末尾にあるスペースを削除する
  • 文字列の途中にある連続したスペースを1つのスペースに置換する

単語間の1つのスペースは保持されます。

元の文字列TRIM関数の結果説明
” 田中 太郎 ""田中 太郎”前後のスペースを削除
”東京都  渋谷区""東京都 渋谷区”連続スペースを1つに
”  ABC  DEF  ""ABC DEF”前後削除+連続スペース圧縮

注意:全角スペースへの対応

TRIM関数が除去するのは半角スペース(文字コード32)のみです。全角スペース(文字コード12288)は除去されません。全角スペースも含めて除去したい場合は、SUBSTITUTE関数と組み合わせます。

=TRIM(SUBSTITUTE(A2, " ", " "))

この数式は、まず全角スペースを半角スペースに置換してからTRIM関数で整理します。

CLEAN関数の基本構文

=CLEAN(文字列)

引数の説明

引数説明必須/任意
文字列制御文字を除去する対象の文字列やセル参照必須

CLEAN関数が除去する文字

CLEAN関数は、ASCIIコードの0から31に該当する制御文字を除去します。具体的には以下のような文字です。

文字コード説明混入しやすい場面
0 (NULL)ヌル文字データベースからのエクスポート
9 (TAB)タブ文字テキストファイルの貼り付け
10 (LF)改行(ラインフィード)Web上のデータコピー
13 (CR)復帰(キャリッジリターン)他システムからのインポート

CLEAN関数の制限

CLEAN関数はASCIIコード0~31の制御文字のみを除去します。ノーブレークスペース(文字コード160)など、32以上の非表示文字は除去できません。これらの文字を除去するにはSUBSTITUTE関数とCHAR関数を組み合わせます。

=SUBSTITUTE(CLEAN(A2), CHAR(160), "")

実践例1:外部データの一括クレンジング

CSVインポート後のデータ整理

外部システムから顧客データをCSV形式でインポートした場合、以下のような問題が起きることがあります。

A列(インポートデータ)B列(整理後)
2”  田中  商事  ""田中 商事”
3”鈴木工業(改行文字あり)""鈴木工業”
4” 佐藤  物産  ""佐藤 物産”

B列の数式は、TRIM関数とCLEAN関数を組み合わせます。

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

この数式は3段階で処理します。まずSUBSTITUTE関数で全角スペースを半角スペースに変換し、次にCLEAN関数で制御文字を除去し、最後にTRIM関数で余分なスペースを整理します。

住所データのクレンジング

住所データは入力者によって全角スペース・半角スペースの使い方がばらつきがちです。

A列(入力された住所)B列(統一後)
2東京都 渋谷区  神南 1-2-3東京都 渋谷区 神南 1-2-3
3大阪府  大阪市 北区 梅田大阪府 大阪市 北区 梅田
4愛知県 名古屋市 中区 栄愛知県 名古屋市 中区 栄
=TRIM(SUBSTITUTE(A2, " ", " "))

実践例2:セル内改行の除去

備考欄の改行を除去する

Excelではセル内でAlt+Enterで改行を入力できます。この改行文字(LF: 文字コード10)を除去するには、CLEAN関数またはSUBSTITUTE関数を使います。

=CLEAN(A2)

改行を除去してスペースに置き換えたい場合は、SUBSTITUTE関数とCHAR関数を使います。

=SUBSTITUTE(A2, CHAR(10), " ")

改行をカンマに置き換えて一行にする

複数行にわたる入力をカンマ区切りの一行に変換する場合です。

=SUBSTITUTE(A2, CHAR(10), ", ")

例えば、セル内に改行で区切られた「りんご」「みかん」「ぶどう」が入力されている場合、結果は「りんご, みかん, ぶどう」になります。

実践例3:VLOOKUP検索の不一致を解消

見えない文字が原因のVLOOKUPエラー

VLOOKUP関数で検索値が一致しない場合、見えない文字が原因であることがあります。

セルの見た目は同じ「A001」でも、一方に制御文字やスペースが含まれていると一致しません。LEN関数で文字数を比較すると原因がわかります。

=LEN(A2)

検索側の文字数が4ではなく5以上であれば、不要な文字が含まれています。

対処法として、VLOOKUP関数の検索値にTRIM関数とCLEAN関数を適用します。

=VLOOKUP(TRIM(CLEAN(A2)), B:C, 2, FALSE)

INDEX MATCH関数でも同様に対応

=INDEX(C:C, MATCH(TRIM(CLEAN(A2)), TRIM(CLEAN(B:B)), 0))

検索範囲側にも不要な文字が含まれている可能性がある場合は、上記のように検索範囲にもTRIM関数とCLEAN関数を適用します。ただし配列処理になるため、データ量が多い場合はパフォーマンスに注意が必要です。

名簿データの空白統一

姓名間のスペース統一

社員名簿で姓と名の間のスペースが統一されていない場合に整理します。

A列(氏名)B列(統一後)
2田中 太郎田中 太郎
3鈴木 花子鈴木 花子
4佐藤  次郎佐藤 次郎
=TRIM(SUBSTITUTE(A2, " ", " "))

メールアドレスの前後スペース除去

メールアドレスにスペースが含まれると送信エラーの原因になります。

=TRIM(LOWER(A2))

TRIM関数で前後のスペースを除去し、LOWER関数で小文字に統一しています。

データクレンジングの定番パターン

汎用クレンジング数式

多くの場面で使える汎用的なクレンジング数式をまとめます。

=TRIM(CLEAN(SUBSTITUTE(SUBSTITUTE(A2, " ", " "), CHAR(160), " ")))

この数式は以下の処理を行います。

  1. SUBSTITUTE関数で全角スペースを半角スペースに変換する
  2. SUBSTITUTE関数でノーブレークスペース(CHAR(160))を半角スペースに変換する
  3. CLEAN関数で制御文字を除去する
  4. TRIM関数で余分なスペースを整理する

クレンジング前後の確認方法

クレンジングが正しく行われたかを確認するには、LEN関数で文字数を比較します。

=IF(LEN(A2)=LEN(B2), "変化なし", "修正あり("&LEN(A2)-LEN(B2)&"文字削除)")

Google スプレッドシートでの互換性

TRIM関数とCLEAN関数はGoogle スプレッドシートでも利用可能です。ただし、Google スプレッドシートのTRIM関数は全角スペースも除去対象に含む場合があり、Excelとは動作が異なることがあります。互換性が必要な場合は事前に動作を確認してください。

まとめ

TRIM関数とCLEAN関数は、データクレンジングに欠かせない関数です。

  • TRIM関数は前後のスペース削除と連続スペースの圧縮を行う
  • CLEAN関数はASCIIコード0~31の制御文字を除去する
  • 全角スペースはTRIM関数の対象外なので、SUBSTITUTE関数との併用が必要
  • VLOOKUPの検索不一致は見えない文字が原因であることが多い
  • 汎用クレンジング数式を一つ覚えておけば多くの場面に対応できる

外部データの取り込みや複数人が入力するデータの整理で活用してください。

広告スペース (article-bottom)

あわせて読みたい