EXCEL VBA 文字列内のスペース・空白を削除(先頭・末尾・右側・左側・前後 Trim関数)
EXCEL VBA 文字列内のスペース・空白を削除(先頭・末尾・右側・左側・前後 Trim関数)
今回説明するのは、文字列内の先頭および末尾にあるスペース(空白)を削除するTrim関数を説明いたします。文字列の前後にスペース(空白)が有る場合文字列を統一する時に使用すると便利です。また、Trim関数は、3種類あり①Trim関数は、前後・②LTrimは、先頭・③RTrimは、末尾の全角・半角スペースを同時に削除する事ができます。それでは、サンプルプログラムを交えて順番に説明いたします。
●【EXCEL VBA Replace関数 複数の文字列の置換(セルの値・指定文字列位置・置換リスト・数式の置換)については、下記を参照して下さい】
●【EXCEL VBA Substitute メソッド 複数の文字列の置換(大量・一括変換・置換リスト)については、下記を参照して下さい】
●【Trim関数・LTrim関数・RTrim関数の利用方法については、下記を参照して下さい(Microsoft社 様)】
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/ltrim-rtrim-and-trim-functions
● Trim関数を利用するには、下記の通りに設定を行います。
Trim・・・文字列の前後のスペースを削除します。
LTrim・・・文字列の先頭(左側)のスペースを削除します。
RTrim・・・文字列の末尾(右側)のスペースを削除します。
● スペース(空白)の削除は、全角・半角ともに削除する事ができます。
【使用例】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
' ' Sub Trim_sample() '先頭と末尾のスペースを削除します。 Dim Moji As String Moji = " 東京都新宿区西新宿 1丁目 " MsgBox Trim(Moji) End Sub ' Sub LTrim_sample() '先頭のスペースを削除します。 Dim Moji As String Moji = " 東京都新宿区西新宿 1丁目 " MsgBox LTrim(Moji) End Sub ' Sub RTrim_sample() Dim Moji As String '末尾のスペースを削除します。 Moji = " 東京都新宿区西新宿 1丁目 " MsgBox RTrim(Moji) End Sub ' ' |
【実行結果】
【注意点】
・Trim関数・LTrim関数・RTrim関数では、指定した文字列の中の空白(全角・半角)を削除する事ができません。文字列の中を削除する場合は、Replace関数を使用する事で対応する事が出来ます。
EXCEL VBA 文字列内の前後スペースを削除(データの一括処理:Trim関数)
下記のサンプルプログラムは、シート内の文字列データの前後に全角・半角スペース(空白)が登録されています。このスペースを削除するサンプルプログラムです。文字列前後にスペースがバラバラに入力されているデータを整列する時に便利です。それでは、順番に説明いたします。
【プログラムの流れ】
① A列の最終行を取得します。
② 2行目からA列の最終行まで繰り返します。
③ Trim関数を使いA列の文字列の前後のスペースを削除します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
' ' Sub Trim01() '文字列内の前後スペースを削除(データの一括処理:Trim関数) Dim I, lRow As Long lRow = Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行を取得します。 For I = 2 To lRow '2行目からA列の最終行まで繰り返す。 Cells(I, "A") = Trim(Cells(I, "A")) 'Trim関数を使いA列の文字列の前後のスペースを削除します。 Next I End Sub ' |
(画面クリックして拡大)
EXCEL VBA 表全体の文字列内の先頭スペースを削除(指定した表全体)
下記のサンプルプログラムは、表データの文字列の先頭に全角・半角スペース(空白)が登録されており、このスペースを削除するサンプルプログラムです。表全体を一括に整理する時に便利です。それでは、順番に説明いたします。
【プログラムの流れ】
① セルA1を起点とする表の範囲を取得します。
② ①で取得した表の範囲全てのセルを順番に繰り返します。
③ セル内の文字列に対して左側(先頭)のスペース(空白)全角・半角ともに削除します。
④ 表範囲の全てのセルが終わるまで繰り返します。③へ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
' ' Sub Trim02() '表範囲の文字列内の先頭スペースを削除 Dim Hani As Range Dim Moji As Variant Set Hani = Range("A1").CurrentRegion 'セルA1からの表範囲を取得します。 For Each Moji In Hani '取得した表範囲全てのセルを順番に繰り返します。 Range(Moji.Address) = LTrim(Moji) 'セル内の文字列にたいして左側の空白を削除します。 Next Moji End Sub ' |
(画面クリックして拡大)
EXCEL VBA 表全体の文字列内の前後スペースを削除(ブック・全ワークシート対象)
下記のサンプルプログラムは、サンプルプログラム②の応用になります。ブック内の全てのワークシートにある文字列を対象にTrim関数を使い文字列の前後にスペースが有る場合は、スペースを削除します。ブック内の全ての文字列に対して一括に行うのでブック内の全てのワークシートの文字列に対して統一したい時に便利です。
【プログラムの流れ】
① 実行するブック全てのシートを繰り返します。
② 現在のシートに文字列が入力されているセル位置を取得します。
③ 取得した表範囲全てのセルを順番に繰り返します。
④ セル内の文字列に対して、先頭・後方にスペース(空白)がある場合は、削除します。
⑤ ②で取得した文字列が入力されているセル位置の全てを繰り返します。
⑤ 全てのシートを繰り返す。②へ ※次のシートへ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
' ' Sub Trim03() 'ブック内の各シートにある文字列内の前後スペースを削除 Dim Ws As Worksheet Dim Hani As Range Dim Moji As Variant For Each Ws In ThisWorkbook.Worksheets 'ブックの全てのシートを繰り返します。 Set Hani = Ws.Cells.SpecialCells(xlCellTypeConstants, xlTextValues) '文字が入力されている全てのセル位置を取得します。 For Each Moji In Hani '取得した表範囲全てのセルを順番に繰り返します。 Ws.Range(Moji.Address) = Trim(Moji) 'セル内の文字列にたいして前後の空白を削除します。 Next Moji Next Ws End Sub ' ’ |
(画面クリックして拡大)
EXCEL VBA ブック全体の文字列内のスペースを削除(ブック・全ワークシート対象)※Replace関数を使った場合。
下記のサンプルプログラムは、サンプルプログラム③の応用になります。ブック内の全てのシートにある文字列を対象とした、今回は、REPLACE関数を使い、全てのスペース(空白)全角・半角・前後などのスペース場所に関係なく全てのスペースを削除します。ブック内の文字列に対して登録されている全てのスペースを削除する際には、とても便利だと思います。
【プログラムの流れ】
① 実行するブック全てのシートを繰り返します。
② 現在のシートに文字列が入力されているセル位置を取得します。
③ 取得した表範囲全てのセルを順番に繰り返します。
④ セル内の文字列に対して、スペース(空白)がある場合は、全て削除します。
⑤ ②で取得した文字列が入力されているセル位置の全てを繰り返します。
⑤ 全てのシートを繰り返す。②へ ※次のシートへ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
' ' Sub Trim04() 'ブック内の各シートにある文字列内の前後中スペースを削除 Dim Ws As Worksheet Dim Hani As Range Dim Moji As Variant For Each Ws In ThisWorkbook.Worksheets 'ブックの全てのシートを繰り返します。 Set Hani = Ws.Cells.SpecialCells(xlCellTypeConstants, xlTextValues) '文字が入力されている全てのセル位置を取得します。 For Each Moji In Hani '取得した表範囲全てのセルを順番に繰り返します。 Ws.Range(Moji.Address) = Replace(Replace(Moji, " ", ""), " ", "") '文字列内の全ての半角・全角スペースを削除します。 Next Moji Next Ws End Sub ' |
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。