VBAでスペースを簡単に削除する方法|全角・半角・前後の空白にも対応

Excel VBAを使ってデータを整理する際、セル内の余計なスペースが邪魔になることはありませんか?
特に前後の空白や、全角スペースが混じっていると関数では処理がしづらくなります。
本記事では、VBAを使ってセルのスペースを柔軟に削除する方法を、実例とともにわかりやすく解説します。
初心者の方にも実践しやすいように、一つずつ丁寧にコード付きで紹介していきます。


VBAでスペースを削除するとは?

VBAで「スペースを削除する」とは、主に以下のような処理を意味します。

  • 文字列の前後の空白を削除(トリム処理)
  • 文字列中の半角スペースを削除
  • 文字列中の全角スペースを削除
  • 複数のスペースを1つにまとめる

これらはExcelの関数でも一部対応できますが、大量のデータや複数の条件に対応したい場合はVBAの方が圧倒的に便利です。


文字列の前後のスペースを削除する方法

Excelでよくある処理が「文字列の前後のスペースを削除したい」というケースです。これは Trim 関数を使うことで簡単に対応できます。

サンプルコード

Sub TrimSpaces()
Dim cell As Range
For Each cell In Selection
cell.Value = Trim(cell.Value)
Next cell
End Sub

解説

このコードは、選択範囲内のセルをループ処理して、Trim 関数を使って前後のスペースを削除しています。
ただし、Trim半角スペースしか削除できない点に注意が必要です。全角スペースには対応していません。


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

全角スペース( )は、Trim では削除できないため、Replace 関数を使って対応します。

サンプルコード

Sub RemoveFullWidthSpaces()
Dim cell As Range
For Each cell In Selection
cell.Value = Replace(cell.Value, " ", "")
Next cell
End Sub

解説

このコードは選択範囲のセルに含まれる全角スペースを削除します。
全角スペースは " " で表現されており、これを空文字に置き換えることで削除が実現します。


文字列中の半角スペースを削除する方法

文字列中にある半角スペース(例:「山 田 太 郎」)を完全に取り除きたい場合は、以下のようなコードを使います。

サンプルコード

Sub RemoveHalfWidthSpaces()
Dim cell As Range
For Each cell In Selection
cell.Value = Replace(cell.Value, " ", "")
Next cell
End Sub

解説

この処理では、半角スペース(” “)を空文字に置き換えています。
文字列の途中にあるスペースもすべて消したい場合に便利です。


半角・全角スペース両方を一括削除する方法

実務では、半角と全角が混在しているケースが多いため、両方を同時に削除する方法が重宝します。

サンプルコード

Sub RemoveAllSpaces()
Dim cell As Range
For Each cell In Selection
Dim text As String
text = cell.Value
text = Replace(text, " ", "") ' 半角スペース削除
text = Replace(text, " ", "") ' 全角スペース削除
cell.Value = text
Next cell
End Sub

解説

このコードでは、一度変数 text に値を格納し、半角・全角両方のスペースを削除したあとで再代入しています。
複数種類のスペースが混じったデータでも対応可能です。


セルの内容をトリム+全角削除する応用コード

文字列の前後の半角スペースを取りつつ、全角スペースも削除したい場合は、以下のように組み合わせた処理が有効です。

サンプルコード

Sub CleanSpaces()
Dim cell As Range
For Each cell In Selection
Dim txt As String
txt = Trim(cell.Value) ' 前後の半角スペース削除
txt = Replace(txt, " ", "") ' 全角スペース削除
cell.Value = txt
Next cell
End Sub

解説

Trim で前後の半角スペースを消し、Replace で全角スペースを削除する組み合わせです。
住所や名前などのデータクリーニングに適しています。


空白を1つだけ残して整形する方法(複数スペース→1つ)

例えば「田中  太郎」といった複数スペースを「田中 太郎」にしたい場合には正規表現(RegExp)の利用が便利です。

サンプルコード

Sub NormalizeSpaces()
Dim regEx As Object
Set regEx = CreateObject("VBScript.RegExp")

Dim cell As Range
With regEx
.Global = True
.Pattern = " {2,}" ' 2つ以上のスペース
End With

For Each cell In Selection
If regEx.test(cell.Value) Then
cell.Value = regEx.Replace(cell.Value, " ")
End If
Next cell
End Sub

解説

このコードでは、2つ以上の連続したスペースを1つに変換しています。
RegExp を使うことで高度な文字列整形が可能になります。


まとめ

VBAでスペースを削除する方法は用途に応じてさまざまです。
以下にポイントをまとめます。

  • 前後のスペース → Trim 関数
  • 半角スペース → Replace(text, " ", "")
  • 全角スペース → Replace(text, " ", "")
  • 混在したスペースを一括削除 → 上記の組み合わせ
  • 複数スペースを1つに統一 → 正規表現で RegExp を使用

Excel関数では対応しきれないケースでも、VBAを使えば一括で処理できるため、効率的にデータ整形を進めることができます。
ぜひ今回紹介したコードを参考に、業務の自動化やデータクレンジングに活用してみてください。

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