VLOOKUPエラーの意外な犯人?「見えない空白」を撃退するExcel・VBAのTrim関数使い分け術

【業務効率化】VBA
スポンサーリンク

こんにちは、ぐーです! いつもブログをご覧いただきありがとうございます。

仕事をしていると、基幹システムから出力したデータや、手入力された名簿を扱う機会は非常に多いですよね。そんな時に私たちの頭を悩ませる「隠れた強敵」が、データの前後にある見えない空白(スペース)です。

  • 「見た目は完全に一致しているのに、VLOOKUPでエラーが返ってくる……」
  • 「ピボットテーブルで集計したら、同じ会社名なのに別々の行に分かれてしまった……」

こうしたトラブルの原因は、そのほとんどが文字の前後にひっそりと紛れ込んだ空白にあります。今回は、この問題をスマートに解決する「Trim関数」について、特に注意が必要なVBAでの活用法を詳しく解説します。

【業務効率化】VBAの記事を見る

【実務で使う】Excel関数の記事を見る

まずは基本をおさらい:ExcelのTRIM関数

VBAの解説に入る前に、まずは標準のTRIM関数の挙動を確認しておきましょう。ここがVBAとの「違い」を理解するポイントになります。

ExcelのTRIM関数: 文字の前後の空白をすべて消去し、さらに文字間に複数の空白がある場合は、それらを1つに整えてくれる「お掃除」が得意な関数です。

:「 A  B 」 → 「A B」

全角・半角スペースを問わず綺麗にしてくれるため、日本語データの整理にも非常に役立ちます。

ここが落とし穴!VBAの「Trim」は別物?

さて、ここからが重要です。「Excelの関数と同じ名前だから、同じ動きをするだろう」と油断していると、思わぬバグを招くことになります。

実はVBAには、空白を処理する関数が3つのバリエーションで用意されています。

  • LTrim:文字列の「左側(先頭)」のみを削除
  • RTrim:文字列の「右側(末尾)」のみを削除
  • Trim:文字列の「両端」のみを削除

【重要】VBA版Trimの限界

Excelの関数とは決定的な違いがあります。それは、VBAのTrimは「文字の間の空白」には一切手を触れないという点です。

  • ExcelのTRIM:「A  B」 → 「A B」(間も整う)
  • VBAのTrim:「A  B」 → 「A  B」(間はそのまま!

この差を理解せずに自動化を進めると、「名字と名前の間のスペースがバラバラで、結局正しく検索できない」といった事故が起きてしまいます。

VBAで「ExcelのTRIM」を呼び出すテクニック

「VBAでも文字の間を綺麗に整えたい」――そんな時、複雑なロジックを組む必要はありません。VBAの中から直接、Excelが持っているWorksheetFunctionとしてのTRIMを呼び出せば解決します。

具体的には、Application.WorksheetFunction.Trim と記述します。

【コピペOK】あらゆる空白を整える「最強のクリーニングマクロ」

文字の前後だけでなく、間の余分な空白も一掃して、データを正しい形に整えるコードをご紹介します。名簿や商品リストを一括でクレンジングする際に、絶大な威力を発揮します。

Sub 選択範囲の完全空白削除()
    Dim cell As Range
    Dim startCount As Long
    Dim endCount As Long
   
    ' 処理前のセル数をカウント
    startCount = Selection.Count
   
    ' 選択している範囲を1つずつチェック
    For Each cell In Selection
        ' 空っぽのセルは無視、文字が入っている場合のみ処理
        If Not IsEmpty(cell.Value) Then
           
            ' VBA標準の Trim(cell.Value) ではなく、
            ' Excel機能の WorksheetFunction.Trim を使う
            cell.Value = Application.WorksheetFunction.Trim(cell.Value)
           
        End If
    Next cell
   
    MsgBox "完了しました!" & vbCrLf & _
          startCount & " 個のセルをクリーニングしました。", vbInformation
End Sub


このコードなら、「 山  田  太郎 」 のようなガタガタなデータも、一瞬で 「山 田 太郎」 という形に整います。(今回の場合、「山」と「田」の間のスペースは残るので注意!)

まとめ:空白削除はデータ品質の「土台」です

空白削除は、正確なデータ分析を行うための欠かせない準備作業です。

  • ExcelのTRIM関数:前後と文字間の両方を整える優等生。
  • VBA標準のTrim:前後のみを削除する(間の空白は残る)。
  • Application.WorksheetFunction.Trim:VBAでExcelのパワーを借りる最強の方法。

こうした関数の挙動の「細かな違い」を理解していることは、実務において非常に大きな強みとなります。

エラーの原因を瞬時に見抜き、スマートに解決できる「頼れるExcel使い」を目指して、ぜひこのテクニックを活用してみてください。

【業務効率化】VBAの記事を見る

【実務で使う】Excel関数の記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

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