空白除去
Excelのデータには「前後に余分なスペースが入っている」「全角スペースが混ざっている」などのケースがよくあります。これを放置すると重複判定や検索で誤判定が起きます。そこで 空白除去 の定番テンプレをまとめました。初心者向けに、コード例をかみ砕いて説明します。
基本の考え方
- Trim関数: 前後の半角スペースを削除。
- WorksheetFunction.Trim: Excel関数と同じで、文字列中の余分なスペースも削除(ただし全角スペースは対象外)。
- Replace: 全角スペース
" "を半角スペース" "に置換。 - 正規化関数: これらを組み合わせて「前後空白」「全角スペース」「連続スペース」をまとめて処理。
テンプレ1:セルの前後空白を削除(Trim)
Sub RemoveSpaces_Basic()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim r As Long
For r = 2 To lastRow
ws.Cells(r, "A").Value = Trim(ws.Cells(r, "A").Value)
Next r
End Sub
VB- ポイント:
Trimは「前後の半角スペース」だけを削除。中間のスペースは残る。
テンプレ2:文字列中の余分なスペースを削除(WorksheetFunction.Trim)
Sub RemoveSpaces_Extra()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim r As Long
For r = 2 To lastRow
ws.Cells(r, "A").Value = WorksheetFunction.Trim(ws.Cells(r, "A").Value)
Next r
End Sub
VB- ポイント: Excel関数の
TRIMと同じ動き。中間のスペースが1つに整えられる。 - 注意: 全角スペースは削除されない。
テンプレ3:全角スペースを半角に置換してからTrim
Sub RemoveSpaces_FullWidth()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim r As Long, s As String
For r = 2 To lastRow
s = ws.Cells(r, "A").Value
s = Replace(s, " ", " ") ' 全角スペースを半角に
s = WorksheetFunction.Trim(s)
ws.Cells(r, "A").Value = s
Next r
End Sub
VB- ポイント: 日本語データでは全角スペースが混ざることが多いので必須。
テンプレ4:正規化関数を作って一括処理
Function NormalizeText(ByVal s As String) As String
' 全角スペースを半角に
s = Replace(s, " ", " ")
' 前後空白を削除
s = Trim(s)
' 連続スペースを1つに
Do While InStr(s, " ") > 0
s = Replace(s, " ", " ")
Loop
NormalizeText = s
End Function
Sub RemoveSpaces_Normalize()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim r As Long
For r = 2 To lastRow
ws.Cells(r, "A").Value = NormalizeText(ws.Cells(r, "A").Value)
Next r
End Sub
VB- ポイント: 「全角→半角」「前後空白削除」「連続スペース削除」をまとめて処理。
- 応用: 重複判定や検索前に必ずこの関数を通すと誤判定が減る。
例題で練習
'例1:前後の半角スペースを削除
Sub Example_Basic()
RemoveSpaces_Basic
End Sub
'例2:文字列中の余分なスペースを削除
Sub Example_Extra()
RemoveSpaces_Extra
End Sub
'例3:全角スペースを半角にしてから整形
Sub Example_FullWidth()
RemoveSpaces_FullWidth
End Sub
'例4:正規化関数で一括処理
Sub Example_Normalize()
RemoveSpaces_Normalize
End Sub
VB初心者向けポイント
- Trimだけでは不十分: 中間スペースや全角スペースは残る。
- 日本語データは全角スペースに注意:
Replace(" "," ")で半角に統一。 - 連続スペースは1つに: ループで置換するときれいになる。
- 正規化関数を作る: どの処理でも同じ関数を通すと安心。
