スプレッドシートのTRIM関数の使い方|余分なスペースを一括削除

スポンサーリンク

外部システムからコピペしたデータで、VLOOKUPが「なぜか一致しない」経験はありませんか?

目視では同じ文字列なのに#N/Aが返る。COUNTIFの集計結果も合わない。原因を調べると、先頭や末尾に見えないスペースが紛れ込んでいた――そんなトラブル、意外と多いですよね。

そんなときに使うのがTRIM関数です。余分なスペースを自動で削除してくれます。コピペデータの整形には欠かせない関数です。

この記事では、スプレッドシートのTRIM関数の基本から、VLOOKUP・COUNTIFとの組み合わせ、全角スペースへの対処法まで紹介します。

スプレッドシートのTRIM関数とは?余分なスペースを自動削除する関数

TRIM関数(読み方:トリム関数)は、テキストから余分なスペースを削除する関数です。

名前は英語の「trim(刈り込む・整える)」が語源です。文字列の前後についたスペースを刈り取るイメージですね。

TRIM関数にできることをまとめると、次のとおりです。

  • 先頭のスペースを削除する
  • 末尾のスペースを削除する
  • 単語間の連続スペースを1つに圧縮する

Googleスプレッドシートには「データ → データクリーンアップ → 空白文字を削除」というメニューもあります。ただし、数式で処理するほうが再現性が高く、大量データにも対応しやすいですよ。

TRIM関数の構文と引数

=TRIM(テキスト)

カッコの中に「スペースを削除したい文字列」を入れるだけです。

引数必須/任意説明
テキスト必須スペースを削除したい文字列やセル参照

引数はひとつだけ。シンプルな構文なので、すぐに使い始められます。

削除されるスペース・されないスペースの違い

TRIM関数が削除するのはASCIIコード32の半角スペースだけです。ここが重要なポイントです。

全角スペースやWebコピペで混入するCHAR(160)は削除できません。ExcelのTRIM関数は全角スペースも削除しますが、Googleスプレッドシートでは残ったままになります。

削除できる文字・できない文字を表にまとめました。

スペース種別TRIMSUBSTITUTECLEAN主な発生源
半角スペース(前後・連続)削除できる全削除可不可CSVインポート・手入力ミス
全角スペース削除できない削除可不可日本語入力切り替え時のミス
CHAR(160)削除できないCHAR(160)指定で可不可Webコピペ・HTMLデータ
改行・制御文字不可一部可削除可Excelコピペ・APIデータ

CLEAN関数はASCII 0〜31の制御文字(改行やタブなど)を削除する関数です。TRIM関数と組み合わせれば、制御文字とスペースの両方を一度に除去できます。

=TRIM(CLEAN(A1))

全角スペースやCHAR(160)への対処法は、後半のセクションで詳しく解説しますね。

基本の使い方:前後・連続スペースをまとめて消す

先頭・末尾スペースの削除(コピペデータの定番整形)

CSVや外部システムからコピペしたデータには、先頭や末尾にスペースが入りがちです。TRIM関数で一発で取り除けます。

A1に「 東京都 」(前後にスペース付き)が入っているとします。

=TRIM(A1)

結果は「東京都」です。前後のスペースがきれいに消えました。

セル1つだけでなく、列全体に適用するのが実務的な使い方です。B1に数式を入れて下方向にコピーすれば、一括で整形できますよ。

単語間の連続スペースを1つに圧縮する

TRIM関数は前後のスペースだけでなく、単語の間にある連続スペースも整理してくれます。

A1に「田中 太郎」(スペース3つ)が入っているとします。

=TRIM(A1)

結果は「田中 太郎」です。3つあったスペースが1つに圧縮されました。

先頭・末尾の削除と連続スペースの圧縮。この2つがTRIM関数の基本動作です。

VLOOKUPが一致しない?スペースが原因の3パターン

VLOOKUPで#N/Aが返るとき、まず疑いたいのがスペースの混入です。目視では同じ文字列でも、スペースが1つ入るだけで「別の文字列」と判定されます。

3大スペース原因の比較表

VLOOKUPが一致しない原因になるスペースは、大きく3種類あります。

原因見た目発生源対処法
半角スペース(前後)目視でわかりにくいCSV・手入力TRIM関数
全角スペース目視でわかりにくい日本語入力の切り替えミスSUBSTITUTE関数で半角に変換してからTRIM
CHAR(160)完全に見えないWebページのコピペSUBSTITUTEでCHAR(160)を指定して置換

どのスペースも目視では見つけにくいのがやっかいです。次に紹介するLEN関数の診断コードで、スペースが入っているかどうかをチェックしてみてください。

LEN関数でスペースを診断するコード

スペースが混入しているかどうかは、LEN関数で簡単に判定できます。

LEN関数は文字数を数える関数です。元の文字列とTRIM後の文字列の文字数を比較すれば、スペースが何文字あるか一目瞭然です。

=LEN(A1)-LEN(TRIM(A1))

結果が「0」なら余分なスペースはありません。「0」以外ならスペースが混入しています。

たとえばA1が「 東京都 」(前後にスペース各1つ)なら、LEN(A1)は5、LEN(TRIM(A1))は3です。差は「2」。スペースが2文字入っているとわかります。

この診断コードを補助列に入れておくと、「どのセルにスペースが入っているか」をすぐに特定できますよ。

VLOOKUP+TRIMのネストで検索値を自動整形

VLOOKUPの検索値にTRIM関数をネスト(入れ子)すれば、スペースが入っていても正しくマッチします。

=VLOOKUP(TRIM(A2), D:E, 2, FALSE)

A2に「 東京都」のようにスペース付きの値が入っていても、TRIM関数が先にスペースを削除します。そのあとでVLOOKUPが検索するので、#N/Aを回避できます。

検索範囲のほう(D列)にもスペースが入っている場合は、範囲側にもTRIM済みの補助列を用意しましょう。検索値と検索範囲の両方を整形するのが確実です。

TIP

VLOOKUPの検索値にTRIMをネストするのは、外部データを扱うときの定番テクニックです。「とりあえずTRIM」の習慣をつけておくと、スペース起因のトラブルを未然に防げます。

COUNTIF+TRIM応用|スペース混じりのデータを正確にカウント

COUNTIF関数の使い方でデータを集計するとき、スペース混じりだと正しくカウントされません。「東京都」と「東京都 」は別の文字列として扱われるからです。

COUNTA関数の使い方でセル数を数える場面でも、スペースだけのセルが「データあり」と判定されてしまうことがあります。

この問題はTRIM済みの補助列を作ることで解決できます。

手順:

  1. 元データの隣の列にTRIM関数を入れる
  2. TRIM済みの列に対してCOUNTIFで集計する
=TRIM(A2)

B列にこの数式を入れて下方向にコピーします。これでスペースなしのデータ列ができます。

=COUNTIF(B2:B100, "東京都")

TRIM済みのB列に対してCOUNTIFを使えば、スペースの有無に関係なく正確にカウントできます。

元データを直接上書きしたい場合は、TRIM済みの列をコピーして「値のみ貼り付け」で元の列に戻しましょう。数式が消えて、整形済みのテキストだけが残ります。

全角スペースはTRIMで消えない|SUBSTITUTE組み合わせ技

TRIM関数が削除するのは半角スペースだけです。全角スペースは削除できません。日本語データでは全角スペースが混入しやすいので、別の対処が必要です。

SUBSTITUTE+TRIMで全角・半角を一括処理

SUBSTITUTE関数は、指定した文字列を別の文字列に置き換える関数です。全角スペースを半角スペースに変換してから、TRIM関数で整形する2段構えが定番です。

=TRIM(SUBSTITUTE(A1," "," "))

数式の中の “ ” は全角スペース、” ” は半角スペースです。SUBSTITUTE関数で全角→半角に変換し、そのあとTRIM関数で前後・連続スペースを削除します。

CHAR(160)(ノーブレークスペース。Webページのコピペで混入する見えないスペース)も同時に処理したい場合は、SUBSTITUTEをもう1段ネストします。

=TRIM(SUBSTITUTE(SUBSTITUTE(A1," "," "),CHAR(160)," "))

ちょっと長く見えますが、やっていることはシンプルです。内側のSUBSTITUTEで全角スペースを半角に変換し、外側のSUBSTITUTEでCHAR(160)を半角に変換。最後にTRIMで整形しています。

REGEXREPLACEでまとめてクリーニングする方法

Googleスプレッドシートには、正規表現で文字列を置換するREGEXREPLACE関数があります。複数種類のスペースを1つの数式でまとめて処理できます。

=TRIM(REGEXREPLACE(A1,"[s ]+"," "))

[s ]+ は「半角スペース・タブ・改行・全角スペースが1文字以上連続したもの」を意味する正規表現パターンです。これらをすべて半角スペース1つに置き換えてから、TRIMで仕上げます。

正規表現が苦手な方はSUBSTITUTE版で十分です。ただ、いろいろな種類のスペースが混在するデータを扱うなら、REGEXREPLACE版のほうがスッキリ書けますよ。

よくある質問(TRIM関数)

Q. TRIM関数で元データは変わりますか?

変わりません。TRIM関数は別のセルに結果を返す関数です。元データを上書きしたい場合は、TRIM済みの結果をコピーして「値のみ貼り付け」で戻してください。

Q. ExcelのTRIM関数との違いはありますか?

ExcelのTRIM関数の使い方は全角スペースも削除します。一方、GoogleスプレッドシートのTRIM関数は半角スペースしか削除しません。Excelファイルをスプレッドシートで開いたとき、全角スペースの処理結果が変わる可能性があるので注意してください。

Q. TRIM関数で改行は削除できますか?

できません。改行やタブなどの制御文字にはCLEAN関数を使います。=TRIM(CLEAN(A1)) のように組み合わせれば、制御文字とスペースの両方を除去できます。

Q. スペースをすべて削除したい場合は?

TRIM関数は単語間のスペースを1つ残します。すべてのスペースを完全に削除したい場合は、SUBSTITUTE関数で半角スペースを空文字に置換してください。=SUBSTITUTE(A1," ","") ですべての半角スペースが消えます。

まとめ

TRIM関数は、コピペデータの余分なスペースを削除するシンプルな関数です。

ポイントを整理します。

  • 構文は =TRIM(テキスト) の1引数だけ。前後のスペース削除と連続スペースの圧縮ができる
  • VLOOKUPの#N/Aエラーはスペース混入が原因のことが多い。検索値に TRIM() をネストするのが定番の対処法
  • =LEN(A1)-LEN(TRIM(A1)) でスペースの混入を素早く診断できる
  • COUNTIF関数でスペース混じりデータを集計するときは、TRIM済み補助列を作る
  • 全角スペースはTRIMでは消えない。SUBSTITUTE関数で半角に変換してからTRIMで仕上げる
  • CHAR(160)やWebコピペの見えないスペースもSUBSTITUTE+TRIMで対処できる

まずは =LEN(A1)-LEN(TRIM(A1)) で、手元のデータにスペースが潜んでいないかチェックしてみてください。

タイトルとURLをコピーしました