【コピペOK】データ整理の効率化!VBAで「不揃いな空白」を「半角1つ」に統一する方法

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

こんにちは、ぐーです!
システムからCSVをダウンロードした際や、Web上のデータをコピーした際、このような「扱いにくいデータ」に遭遇したことはありませんか?

「田中   太郎」
「佐藤 花子」

名前の間のスペースが、全角・半角混在だったり、あるいは連続していたり……。
これらは見た目が不揃いなだけでなく、VLOOKUP関数などでデータを照合する際に「一致なし(#N/A)」エラーを引き起こす大きな要因となります。

本日は、この「バラバラな複数の空白」を「半角スペース1つ」へとスマートに整えるVBAテクニックをご紹介します。

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

多くの人が陥る「VBAの罠」

「空白削除なら Trim 関数を使えばいいのでは?」と思われた方、非常に鋭い視点をお持ちです。

しかし、VBA標準のTrim関数「文字の前後」の空白しか削除してくれません。文字の「間」にある余分なスペースは、そのまま残ってしまうのです。

  • ExcelのTRIM関数: 文字間の余分なスペースも削除して1つにまとめる(非常に優秀!)
  • VBAのTrim関数: 前後のスペースしか削除しない(文字の間には干渉しない)

この違いを理解することが重要です。
そこで今回は、「VBAの中から、優秀なExcelのTRIM関数を呼び出して使う」という、効率的なテクニックを活用します。

コピペで使えるコード

A列に入っているデータを修正し、B列に整形した状態で書き出すマクロです。

Sub CleanSpaces()
    ' 変数の宣言
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim strTarget As String

    ' 操作するシートを指定(現在はアクティブなシート)
    Set ws = ActiveSheet

    ' データの最終行を取得(A列のデータがある最後の行を探す)
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    ' 2行目から最終行まで繰り返し処理
    For i = 2 To lastRow

        ' A列(1列目)の値を取得
        strTarget = ws.Cells(i, 1).Value

        ' 【重要】ExcelのTRIM関数を使って、連続する空白を1つにまとめる
        ws.Cells(i, 2).Value = Application.WorksheetFunction.Trim(strTarget)

    Next i
    MsgBox "データのクレンジングが完了しました!", vbInformation
End Sub

このコードのポイント

ポイントはApplication.WorksheetFunction.Trimです。

これを使うことで、以下の処理が自動的に実行されます。

  1. 文字の先頭と末尾にある空白を完全に削除。
  2. 文字の間にある連続した空白(全角・半角問わず)を「半角スペース1つ」に置換。

例えば「 田中   太郎 」というデータがあれば、「田中 太郎」という最も美しい形式に整えてくれるのです。

正規表現(RegExp)を用いる高度な方法もありますが、現場においては「誰もが理解しやすく、メンテナンスしやすいコード」こそが最適解となります。まずはこの方法からマスターして、実務に役立てていただければと思います。

これからも一緒に、少しずつ「楽」を積み重ねていきましょう!

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


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

この記事を書いた人
ぐー

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

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

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

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

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

コメント

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