Trim・RTrim・LTrim関数の利用 余分なスペースを取り除く

vbatrimeyecatch

文字列操作のTrim・RTrim・LTrim関数は文字列の端にあるスペースを取り除きます。
取り込み文字にスペース(空白)が付いていることでのエラーを防止できます。

こんにちは、じゅんぱ店長(@junpa33)です。

今回は、文字列操作に関連してスペースを取り除くTrim関数・RTrim関数・LTrim関数の使い方についてです。

Trim・RTrim・LTrim関数は余分なスペースを取り除く

vbatrimp004

このTrim関数・RTrim関数・LTrim関数は、いずれも、

文字列の前後についている半角(全角)スペースを取り除くための関数になります。

  • Trim関数は、文字列の前後についている半角(全角)スペースを取り除きます。
  • RTrim関数は、文字列の右側についている半角(全角)スペースを取り除きます。
  • LTrim関数は、文字列の左側についている半角(全角)スペースを取り除きます。

エクセルでデータを操作する場合、

特に、テキストファイルやCSVファイルなど、別のファイルからデータを持って持ってくる時には、

「半角や全角のスペース」がくっ付いていることがあります。

その「付いてきたスペースだけ」を削除するのに利用できる関数になります。

実際にスペースを取り除いてみる

vbatrimp005
例題
vbatrim001a

「東京都 新宿区」という住所録があった時に

セルB2にある住所データを、「C列に都道府県」「E列に市区町村」と分割します。

その際、住所データの間にある「全角スペース」をどちらに付けるかで2つのパターンを設定しました。

C列とE列ので住所データについている「スペースを取り除いたデータ」をD列とF列に表示します。

G列には「都道府県」+「市区町村」を再表示します。

というものを考えていきます。

Trim関数・RTrim関数・LTrim関数の構文

Trim関数の構文

  • Trim(【文字列や文字列型変数】)

RTrim関数の構文

  • RTrim(【文字列や文字列型変数】)

LTrim関数の構文

  • LTrim(【文字列や文字列型変数】)

VBAコード作成と実行結果

VBAコードの実行結果はこのようになります。

(スペースがどこについているかを分かり易くするためアンダーラインを引いています。)

vbatrim002_1a
  • 東京都の後ろの全角スペースを除く→→→「RTrim関数」
  • 大阪市の前の全角スペースを除く→→→→「LTrim関数」
  • 神奈川県 横浜市の両側の全角スペースを除く→→→「Trim関数」

「Right関数」「Left関数」は文字列の切り出しに使う関数です。

RTrim関数を使う

VBA
Option Explicit

Sub RTrim関数使い方()
        With Worksheets("sheet1")
'東京都新宿区の加工
            .Range("C2") = Left(Range("B2"), 4)
            .Range("E2") = Right(Range("B2"), 3)
'右スペースを取り除く
            .Range("D2") = RTrim(Range("C2"))
            .Range("F2") = Range("E2")
            .Range("G2") = Range("D2") + Range("F2")
        End With
End Sub

LTrim関数を使う

VBA
Sub LTrim関数使い方()
'大阪府大阪市の加工
        With Worksheets("Sheet1")
            .Range("C4") = Left(Range("B4"), 3)
            .Range("E4") = Right(Range("B4"), 4)
            .Range("D4") = Range("C4")
            
'左スペースを取り除く
            .Range("F4") = LTrim(Range("E4"))
            .Range("G4") = Range("D4") + Range("F4")
        End With
End Sub

Trim関数を使う

VBA
Sub Trim関数使い方()
'神奈川県横浜市の加工
'両端のスペースを取り除く
        With Worksheets("Sheet1")
            .Range("B7") = Trim(Range("B6"))
            .Range("C7") = Left(Range("B7"), 4)
            .Range("E7") = Right(Range("B7"), 4)
            .Range("D7") = Range("C7")
'左スペースを取り除く
            .Range("F7") = LTrim(Range("E7"))
            .Range("G7") = Range("D7") + Range("F7")
        End With
End Sub

参考記事

  • 「Right関数」「Left関数」「Mid関数」についてはこの記事が参考になります。
vbamideyecstch Mid関数・Right関数・Left関数は文字列中の文字を切り出す

スペース削除をあまく見るとこうなる!

vbatrimp006

先ほどの例題の実行結果から、

vbatrim002_1a

データについている半角(全角)スペースを処理しないまま、

住所データから「市区町村」部分を切り出して、次のVBAコード進行に移ります。

例えばE列にある市区町村データの中で、「大阪市」があるデータ行を使いたいとします。

「大阪市」という検索ワードの取得は、「入力用セル」、「ユーザーフォーム」や「InputBox」などからの入力と想定します。なので、まず文字入力は空文字から始まる「 大阪市」とはしないという設定です。

VBA
Sub 市区町村検索()
    Dim Ser As Long
        Ser = WorksheetFunction.Match("大阪市", Range("E:E"), 0)
        MsgBox Ser & " 行にあります。"
End Sub

実際には、Matchワークシート関数はデータ不一致の場合は必ずエラーを出しますので、コードストップしないようにエラーを無視するコードを同時に記述しておきます。

実行結果

当然の結論として「一致するものがないのでERROR」が起こります。

「大阪市」と「 大阪市」は全く違うものと判断されたのです。

vbatrim003_1a

参考記事

  • Match関数についてはこちらの記事を参考にできます。
vbamatcheyecatch001 VBAで使うMatch関数 活用度アップでテッパン関数に!

Trim・RTrim・LTrim関数の利用法のまとめ

vbatrimp007

Trim関数・RTrim関数・LTrim関数は、半角(全角)スペースを取り除く関数だということです。

特に数値型のデータの場合は殆ど気にならないデータのやり取りでも、

テキスト化されたデータである文字列型データになった場合は、状況が一変します。

「スペース」も一文字と扱われますので、視覚的外見上同じデータであっても

検索不能になったりして不都合が多く発生します。

数値がテキスト化(文字列型データ)になった時が特に面倒です。

「桁数の多い数値が数値型か、半角スペースの付いた文字列型か」なんて見分けることも大変です。

「9784774114798」は数値型で「 9784774114798」は文字列型 なんて目を凝らしてみても分かり難いです。

出来れば、

他からテキストデータを持って来た時は、

先にスペース削除処理を行っておくことをお勧めします。

特に数値の場合は、コード組み立て作業の都合で、文字列型の扱いになった場合は特に注意をしていただくのが吉となります。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min