本ページには広告が含まれています。

Excel VBA Trim関数 文字列の先頭と末尾の空白を削除

Excel VBA Trim関数 文字列の先頭と末尾の空白を削除

Excel VBAの「Trim関数」について解説します。

スポンサーリンク

Trim関数とは

Excel VBA の Trim関数とは、文字列の先頭と末尾にあるスペース(空白文字)を取り除いて返す関数です。

※ 文字列の先頭や末尾にスペース(空白文字)がないときはそのまま元の文字列が返ります。

LTrim / RTrim / Trim 関数(Visual Basic for Applications リファレンス)

文字列の先頭にあるスペース(空白文字)だけを取り除きたいときは LTrim 関数を使います。

文字列の末尾にあるスペース(空白文字)だけを取り除きたいときは RTrim 関数を使います。

スポンサーリンク

構文(引数と戻り値)

Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。

構文

Trim(string)

引数

引数 説明
string【必須】対象の文字列(式)を指定します

戻り値

戻り値 説明
文字列string の先頭と末尾にあるスペース(空白文字)を削除した文字列が返ります
※ スペースは全角/半角問わず、複数ある場合はすべてを取り除きます
string に Null が含まれていた場合は、Null が返されます。
string 先頭および末尾にスペース(空白文字)が無い場合はそのまま返します。

解説(使用例)

簡単なサンプルコードを作成して使用例を解説していきます。

Trim関数 サンプル

元の文字列 stringTrim関数 で先頭と末尾の空白を取り除いた文字列を比較表示します。

Sub Trim_Sample01()
  Dim str As String
  
  '先頭と後に空白がある文字列
  str = "  kurumico.com "
  
  '元の文字列の表示と
  '末尾の空白を除いた表示を
  '比較しやすいように[]内に表示する
  MsgBox "[" & str & "]" & vbCrLf & _
         "[" & Trim(str) & "]"
         
End Sub

実行結果の MsgBox 画像がこちらです。

Trim_Sample01 実行結果のMsgBox画像

・元文字列の指定「str = ”  kurumico.com ”」には、先頭と末尾の両方にスペースが入っています。

Trim 関数を使って、先頭と末尾の両方のスペース(空白文字)を取り除きます。

Trim(str)

・MsgBox の表示で、先頭と末尾ともにスペース(空白文字)が取り除かれたことが確認できます。

先頭と末尾の空白を取り除いてセルに書き込むサンプル

次のサンプルコードは、A列の「氏名」データの先頭と末尾にスペース(空白文字)が存在している設定です。

データを分割する前に「氏名」データの先頭と末尾にスペース(空白文字)を取り除いておく必要があります。

Sub Trim_Sample02()
  Dim str As String
  Dim s As Long, i As Long

  For i = 2 To 10
    'セルデータの先頭と末尾の空白を削除
    str = Trim(Cells(i, 1))
    ' 空白位置を取得する
    s = InStr(1, str, " ", vbTextCompare)
    '「姓」
    Cells(i, 2) = Mid(str, 1, s - 1)
    '「名」
    Cells(i, 3) = Trim(Mid(str, s + 1))
  Next

End Sub

実行結果のワークシート画像です。

Trim_Sample02 実行結果のワークシート画像

A列の「氏名」データの特徴は次のとおりです。

「氏名」データの先頭と末尾の両方にスペース(空白文字)がある(A列参照)

・「氏(姓)」と「名」の間にスペースがあるが「全角」「半角」が複数混在(G列参照)

・「氏(姓)」の字数が1~3のように不特定

InStr 関数InStrRev 関数 を使うには、先頭や末尾にスペース(空白文字)があっては正しい分割位置を特定することができません。

そこで先ず Trim関数 を使って「氏名」データの先頭と末尾のスペース(空白文字)を取り除いておきます。

str = Trim(Cells(i, 1))

これで分割の準備ができたました。

InStr 関数 で先頭から空白の位置を取得した場合、空白が複数あったときには、後ろ側の「名」の部分の先頭に空白が存在していることになります。

そこで Trim関数 を使って、空白を取り除いてからセルに書き込んでいます。(13行目)

Trim(Mid(str, s + 1))

この部分は Trim関数 ではなく再び LTrim関数 を使っても同じ結果になります。

Mid関数 の解説記事で使ったサンプルでは、「氏名」から「名」の部分を抜き出す際に、姓名間のスペースの取得に InStrRev 関数 を使っています。

おわりに

Excel VBA「Trim 関数」で対象文字列から先頭と末尾のスペース(空白文字)を取り除いて返す方法について解説しました。

二つ目のサンプルのように、セルから取得する文字列や、他の関数やメソッドで取得した文字列の先頭にスペース(空白文字)が入っているケースは多く存在します。スペース(空白文字)が入っていたために不具合が出ることもあります。

そんな場合の空白削除に「Trim 関数」や「LTrim 関数」「RTrim 関数」を状況に応じて使い分けましょう。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらです。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!