VBAで自動化 VBA一覧 データ整形・分割 空白:削除

【VBA】列・範囲のスペースを削除する方法

Excel VBAを使用する場合、特定の列からスペースを簡単に削除できます。大量のデータに含まれる不要なスペースを削除することは、データクレンジングの重要なプロセスです。列のスペースを削除する方法について説明します。

Excel VBAで列のスペースを削除する方法

列のスペースを削除する基本的な方法

列全体のスペースを削除する場合、Replace関数を使用して、半角スペースまたは全角スペースを削除します。【VBA】スペースを一括で削除【Replace関数:Trim関数】

【使用例: 列全体のスペースを削除】

Sub RemoveSpacesInColumn()

Dim ws As Worksheet
Dim lastRow As Long
Dim cell As Range

' シートを指定
Set ws = ThisWorkbook.Sheets("Sheet1")

' A列の最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

' A列の範囲をループしてスペースを削除
For Each cell In ws.Range("A1:A" & lastRow)

cell.Value = Replace(cell.Value, " ", "") ' 半角スペースを削除

Next cell

End Sub

シートのA列に含まれるすべての半角スペースを削除します。Replace関数を使ってスペース(" ")を空文字("")に置き換えることで、スペースを削除します。

全角スペースを削除する方法

データによっては、全角スペースが含まれている場合があります。全角スペースも削除する必要がある場合は、以下のように全角スペース( )も" "関数Replaceで処理します。

【使用例: 全角スペースも削除】

Sub RemoveFullWidthSpacesInColumn()

Dim ws As Worksheet
Dim lastRow As Long
Dim cell As Range

' シートを指定
Set ws = ThisWorkbook.Sheets("Sheet1")

' A列の最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

' A列の範囲をループして全角スペースを削除
For Each cell In ws.Range("A1:A" & lastRow)

cell.Value = Replace(cell.Value, " ", "") ' 全角スペースを削除

Next cell

End Sub

A列の全角スペースも削除します。半角スペースと全角スペースを合わせて削除したい場合は、両方の処理を行えます

半角スペースと全角スペースを同時に削除する方法

半角スペースと全角スペースが続いている場合、両方のスペースを一度に削除することも可能です。以下の例では、両方のスペースを削除します。

【使用例: 半角スペースと全角スペースを同時に削除】

Sub RemoveAllSpacesInColumn()

Dim ws As Worksheet
Dim lastRow As Long
Dim cell As Range

' シートを指定
Set ws = ThisWorkbook.Sheets("Sheet1")

' A列の最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

' A列の範囲をループして半角・全角スペースを削除
For Each cell In ws.Range("A1:A" & lastRow)

cell.Value = Replace(Replace(cell.Value, " ", ""), " ", "") ' 半角と全角スペースを削除

Next cell

End Sub

変更やタブも削除する方法

列内のデータに変更行(vbCrLf)やタブ(vbTab)が含まれている場合、これらを削除する必要があることもあります。以下のコードでは、スペース途中で変更やタブも削除します。

【VBA】セル内・メッセージボックスの改行:【vbCrLf】

【VBA】タブ区切り・スペース:【vbTab】

【使用例: 改行とタブも同時に削除】

Sub RemoveSpacesAndLineBreaksInColumn()

Dim ws As Worksheet
Dim lastRow As Long
Dim cell As Range

' シートを指定
Set ws = ThisWorkbook.Sheets("Sheet1")

' A列の最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

' A列の範囲をループしてスペース、改行、タブを削除
For Each cell In ws.Range("A1:A" & lastRow)

cell.Value = Replace(Replace(Replace(Replace(cell.Value, " ", ""), " ", ""), vbCrLf, ""), vbTab, "")

Next cell

End Sub

半角スペース、全角スペース、変更、タブを同時に削除しています。複数の空白や見えない文字がデータに含まれている場合に有効です。

特定の範囲内でスペースを削除する方法

列全体ではなく、特定の範囲内でスペースを削除したい場合、次のように範囲を指定して処理を行うことができます。

【使用例: 特定範囲内のスペースを削除】

Sub RemoveSpacesInSpecificRange()

Dim ws As Worksheet
Dim cell As Range

' シートを指定
Set ws = ThisWorkbook.Sheets("Sheet1")

' 指定した範囲内のスペースを削除
For Each cell In ws.Range("A1:A10")

cell.Value = Replace(Replace(cell.Value, " ", ""), " ", "")

Next cell

End Sub

シートのA1からA10までの範囲内のスペースを削除します。特定の範囲でのみスペースを削除したい場合に有効です。

Trim関数を使用して先頭や末尾のスペースを削除する

セル内のデータから先頭や末尾のスペースだけを削除したい場合は、TRIM関数を使用することができます。VBAでもこのTrim関数を利用して、念のためスペースを削除することが可能です。

【使用例: 先頭と末尾のスペースを削除】

Sub TrimSpacesInColumn()

Dim ws As Worksheet
Dim lastRow As Long
Dim cell As Range

' シートを指定
Set ws = ThisWorkbook.Sheets("Sheet1")

' A列の最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

' A列の範囲をループして先頭と末尾のスペースを削除
For Each cell In ws.Range("A1:A" & lastRow)

cell.Value = Trim(cell.Value)

Next cell

End Sub

A列のデータの先頭と末尾にあるスペースを削除しています。Trim関数を使用することで、文字列内の先頭や末尾にある余裕のあるスペースを削除することができます。

注意事項

  • データの確認: スペース削除後、データが意図的に削除された通りに削除されたり、特に見えないスペース特殊文字が影響していないかを確認してください。
  • フォーマット: セルの書式やフォーマットがスペース削除後も維持されるかどうか、確認することが重要です

まとめ

Excel VBAを使うことで、列内のスペースを簡単に削除することが可能です。半角スペース、全角スペース、変更、タブなど、さまざまな形式の空白を削除するために、Replace関数やTrim関数を活用しこれにより、データをクリーンにして、データ解析や処理を効率化することができます。

    -VBAで自動化, VBA一覧, データ整形・分割, 空白:削除