大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで文字列を切り出す方法とその実用例についてご紹介します。文字列を左から、右から、中間を切り出すには、Left、Right、Midでできます。

はじめに

この記事では文字列を切り出すVBA関数、Left、Right、Midについてご紹介します。

これらのVBA関数を使えば左から、右から、中間を切り出すことができます。

切り出したい文字列に応じて使えば自由に文字列の切り出しができます。

この記事で紹介すること

  • 左から切り出す、Left
  • 右から切り出す、Right
  • 中間を切り出す、Mid

目次

VBAで文字列を左から切り出し(Left)

文字列を左から切り出したいといったときに使えるLeftについてご紹介します。

Left使い方

VBAコードです。

Sub TEST1()
    
    '左から3文字切り出し
    a = Left("あいうえお", 3)
    
    MsgBox a
    
End Sub

『Left(文字列, 文字数)』で文字列を左から切り出せます。

文字列の左から3文字を切り出すコードになっています。

文字列『あいうえお』の左から3文字切り出すコードを実行してみます。

このようになります。

左から3文字切り出し

文字列を左から3文字切り出してみる

左から3文字『あいう』が切り出せました。

簡単ですね。

Leftのイメージ

Leftは左から特定の文字数を切り出すことができます。

イメージはこんな感じです。

Leftで左から文字列を切り出すイメージ

左の1文字目から3文字分切り出すとかに使えます。

実用例

ではLeftはどのように使うか、例をご紹介します。

Leftは文字数制限などに使えるかなと思います。

VBAコードの流れはこちらです。

  • ワークシートのセルの値が変更されたら実行するコードを作成
  • 変更されたセルがCells(1, 1)だった場合...
  • セルの値が3文字を超えていた場合...
  • Leftを使ってセルの値を3文字にする

文字数制限のVBAコードです。

ワークシート内のコードに記載します。

'ワークシートの値が変更されたときに実行
Private Sub Worksheet_Change(ByVal Target As Range)
    
    '変更されたセルが1行1列目の場合
    If Target.Row = 1 And Target.Column = 1 Then
        
        '文字数が3を超える場合
        If Len(Cells(1, 1)) > 3 Then
            
            '文字数を3文字にする
            Cells(1, 1) = Left(Cells(1, 1), 3)
        
        End If
        
    End If
    
End Sub

実行してみます。

セルに5文字を入力してみます。

5文字入力してみる

セルに5文字入力してみる

Leftを使って3文字に制限しているので5文字入力しても3文字に制限されます。

3文字に制限される

セルの文字数が3文字に制限される

Leftを使って3文字『あいう』に制限できました。

文字列を左から切り出しできるので文字数制限に使いやすいです。

VBAで文字列を右から切り出し(Right)

VBAで文字列を右から切り出すRightについて説明します。

Right使い方

文字列を右から切り出すRightのVBAコードです。

Sub TEST2()
    
    '右から3文字切り出し
    a = Right("あいうえお", 3)
    
    MsgBox a
    
End Sub

『Right(文字列, 文字数)』で文字列を右から切り出せます。

このVBAコードは文字列『あいうえお』を右から3文字切り出すコードになっています。

文字列を右から3文字切り出した結果です。

右から3文字切り出し

文字列を右から3文字切り出した結果

文字列『あいうえお』を右から3文字なので『うえお』が切り出されます。

文字列を右から切り出すRightのイメージです。

Rightのイメージ

文字列を右から切り出すRightのイメージ

一番右側が1文字目となって切り出すイメージです。

実用例

右から文字列を切り出すRightを使う例としてはこんな文字列から切り出したい場合に使えるかと思います。

  • あいうえお-123
  • かきく-456
  • さしすせそたち-789

こんな感じで右側の文字数が決まっている場合です。

切り出したい右側の文字数が必ず3文字と決まっていたら『Right(文字列, 3)』で切り出すことができます。

VBAで文字列から任意の文字列を切り出し(Mid)

切り出したい位置と切り出したい文字数を指定して文字列を切り出すのは『Mid』でできます。

文字列の左からでも右からでもなく中間のところを切り出したい場合ですね。

Midには2パターンの切り出し方があります。

  • 切り出す位置と文字数を指定
  • 切り出す位置だけ指定

説明してきます。

位置と文字数を指定して切り出し

位置と文字数を指定して切り出したMidを使ったVBAコードです。

Sub TEST3()
    
    '左の3文字目から2文字切り出し
    a = Mid("あいうえお", 3, 2)
    
    MsgBox a
    
End Sub

Midの書き方は『Mid(文字列, 位置, 文字数)』というように記載します。

このVBAコードでは左から3番目の文字から2文字を切り出しています。

こんな結果になります。

位置と文字数を指定して切り出した結果

文字列の任意位置から任意文字数分切り出す

左から3番目の文字から2文字ですので『うえ』が切り出されました。

Midのイメージはこんな感じです。

位置と文字数を指定するイメージ

Midで任意位置から任意文字数文切り出すイメージ

Midでは好きな位置から好きな文字数切り出せます。

位置だけを指定して切り出し

もう一つの方法でMidは3つ目の引数を省略できます。

3つ目の引数を省略すると好きな位置から最後までを切り出すことができます。

VBAコードはこんな感じです。

Sub TEST4()
    
    '左の3文字目から最後まで切り出し
    a = Mid("あいうえお", 3)
    
    MsgBox a
    
End Sub

『Mid(文字列, 位置)』というように記載します。

3つめの引数を省略すると3文字目から最後までを切り出せます。

指定した位置から最後までを切り出す

文字列を任意の位置から最後までを切り出す

文字列『あいうえお』の3文字目から最後までなので『うえお』が切り出されています。

Midの3つ目の引数を省略した際のイメージです。

指定した位置から最後までを切り出すイメージ

Midで文字列を任意の位置から最後までを切り出すイメージ

例えば次のような文字列を切り出したい場合は引数を省略すると便利です。

  • 123-あいうえお
  • 456-かきく
  • 789-さしすせそたち

最初の4文字の長さが同じでそのあとの文字列を取得したい場合です。

実用例

実用例です。

カッコで囲まれた中の文字列を取得したい。といった場合に使えます。

例えばこんな文字列です。

  • あい(123)うえお

このカッコ内の文字列の取得にMidが使えます。

VBAコードは少し工夫が必要です。

手順としては

  • 『(』の位置を探す
  • 『)』の位置を探す
  • 『(』と『)』の間の文字列をMidで取得する

というような流れです。

Sub TEST5()
    
    a = "あい(123)うえお"
    
    b = InStr(a, "(") '「(」の位置を取得
    c = InStr(a, ")") '「)」の位置を取得
    
    'カッコ内の文字列を取得
    d = Mid(a, b + 1, c - b - 1)
    
    MsgBox d
    
End Sub

VBAコードを実行してみます。

カッコ内の文字列を取得

カッコの中の文字列を取得するVBAコードを実行

カッコの中の文字列『123』が取得できました。

VBAコード開設

VBAコードの中で『(』を取得する際に『InStr』を使いました。

これは『InStr(文字列, 検索文字)』で検索文字の右からの位置がわかります。

例えば、『InStr("あい(123)うえお", "(")』とすると『3』が取得できます。

この『InStr』で『(』は『3』番目、『)』は『7』番目を取得します。

あとはMidを使ってMid("あい(123)うえお", 3 + 1, 7 - 3 - 1)でカッコ内の文字列を取得しています。

この『+ 1』とか『- 1』は取得する位置や文字数を調整しています。

このようにMidを使えばカッコ内の文字を取得することができます。

『Mid』、結構使えます。

おわりに

この記事では文字列を切り出すVBA関数、Left、Right、Midについてご紹介しました。

これらのVBA関数を使えば文字列の左から、右から、中間を切り出すことができます。

切り出したい文字列に応じて使っていきましょう。

参考になればと思います。最後までご覧くださいましてありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す