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

【VBA】スペースを一括で削除【Replace関数:Trim関数】

Excel VBAを使用してデータを操作する際、セル内に不要なスペースが含まれていることがあります。データ入力時に意図せず発生した余分なスペースは、データの正確な解析や処理に支障をきたす可能性があります。VBAを活用して一括でスペースを削除する方法を紹介します。スペースの削除に使えるReplace関数について説明します。

Excel VBAでスペースを一括で削除する方法

Replace関数を使用してスペースを削除する

VBAで最もシンプルな方法として、Replace関数を使用して文字列内のスペースを削除することができます。Replace関数は、特定の文字列を別の文字列に置き換えるために使用され、スペースを空白に置き換えることでスペースを削除することができます。

【使用例: セル内のスペースを削除する】

Sub RemoveSpacesInCell()

' セルA1のスペースをすべて削除してセルB1に表示
Range("B1").Value = Replace(Range("A1").Value, " ", "")

End Sub

A1セルの文字列からすべてのスペースを削除し、その結果をB1セルに表示します。たとえば、A1セルに「Hello World」が入っている場合、B1セルには「HelloWorld」が表示されます。

この方法は全角のスペースか半角のスペースか区別するため、上記のサンプルコードのように半角のスペースを削除指定している場合は、全角のスペースは削除されません

【VBA】Replace関数で空白のスペースを削除する方法

範囲内のすべてのセルからスペースを一括削除する

複数のセルにわたってスペースを削除したい場合、ループを使用して範囲内の各セルに対してReplace関数を適用します。

【使用例: 範囲内のすべてのセルからスペースを一括削除】

Sub RemoveSpacesInRange()

Dim cell As Range
Dim targetRange As Range

' スペースを削除する範囲を指定(例: A1からA10まで)
Set targetRange = Range("A1:A10")

' 範囲内の各セルからスペースを削除
For Each cell In targetRange

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

Next cell

End Sub

A1からA10までの範囲内の各セルからすべてのスペースを削除します。例えば、A1セルに「John Doe」とあった場合、「JohnDoe」に変換されます。

Trim関数で前後のスペースのみを削除する方法

セル内のデータにおいて、文字列の前後に余分なスペースが入っている場合、Trim関数を使用してそのスペースを削除することができます。Trim関数は、文字列の先頭と末尾にあるスペースを削除し、文字列内のスペースは残します。

【使用例: 前後のスペースのみを削除】

Sub TrimSpacesInCell()

' セルA1の前後のスペースを削除してセルB1に表示
Range("B1").Value = Trim(Range("A1").Value)

End Sub

A1セル内の前後のスペースを削除し、結果をB1セルに表示します。たとえば、「 Hello World 」という文字列の場合、B1セルには「Hello World」が表示されます(間のスペースは残ります)。

全角スペースと半角スペースの区別せずに、スペースは削除されます。

改行やタブを含むスペース類を削除する

スペース以外に、改行(vbCrLf)やタブ(vbTab)などの空白文字も一括で削除したい場合は、複数のReplace関数を組み合わせて削除することができます。

【使用例: 改行やタブを含むスペース類をすべて削除】

Sub RemoveAllWhitespace()

Dim cell As Range
Dim targetRange As Range

' 削除対象の範囲を指定
Set targetRange = Range("A1:A10")

' 範囲内の各セルからスペース、改行、タブを削除
For Each cell In targetRange

cell.Value = Replace(cell.Value, " ", "") ' スペースを削除
cell.Value = Replace(cell.Value, vbTab, "") ' タブを削除
cell.Value = Replace(cell.Value, vbCrLf, "") ' 改行を削除

Next cell

End Sub

指定した範囲内のすべてのセルに対してスペース、タブ、改行を一括で削除します。

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

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

特定の場所のスペースを削除する(例: 複数のスペースを1つにまとめる)

データによっては、連続したスペースを1つにまとめたい場合があります。この場合、正規表現(VBAではRegExpオブジェクト)を使ってスペースを正確に処理することができます。【VBA】正規表現オブジェクト作成・検索・抽出

【使用例: 複数のスペースを1つにまとめる】

Sub ConsolidateSpaces()

Dim cell As Range

Dim targetRange As Range

Dim regEx As Object

' 正規表現オブジェクトを作成
Set regEx = CreateObject("VBScript.RegExp")

regEx.Global = True
regEx.Pattern = "\s+"

' 対象の範囲を指定
Set targetRange = Range("A1:A10")

' 範囲内の各セルで複数のスペースを1つにまとめる
For Each cell In targetRange

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

Next cell

End Sub

A1からA10の範囲で連続するスペース(2つ以上)を1つにまとめます。たとえば、「John  Doe」という文字列は「John Doe」に変換されます。

全角・半角のスペースを区別して処理が行われます。上記の例では、半角スペースを処理する例になります。

WorksheetFunction.Trimを使用して複数のスペースを1つにまとめる

VBAのWorksheetFunction.Trimメソッドは、複数のスペースを自動的に1つにまとめ、前後のスペースも削除する便利な関数です。

【使用例: WorksheetFunction.Trimでスペースを1つにまとめる】

Sub TrimMultipleSpaces()

Dim cell As Range
Dim targetRange As Range

' 対象範囲を指定
Set targetRange = Range("A1:A10")

' 範囲内の各セルのスペースを1つにまとめる
For Each cell In targetRange

cell.Value = WorksheetFunction.Trim(cell.Value)

Next cell

End Sub

指定した範囲内のセルで複数のスペースが1つにまとめられ、かつ前後のスペースも削除されます。

まとめ

Excel VBAでは、Replace関数やTrim関数を使用することで、セル内の不要なスペースを簡単に削除することができます。データの前処理やクリーニングを行う際に、スペースを一括で削除することは役立ちます。連続したスペースを1つにまとめたり、特定の範囲内のデータから一括でスペースを削除することにより、データの整合性を保つことができます。

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