【Excel VBA】文字列を取り出す方法Left関数・Right関数・Mid関数

文字列を取り扱うのは、プログラミングの基本的な操作です。VBAでもほかのプログラミング言語同様によく使います。

ExcelのLeft関数とVBAのLeft関数は、ほとんど同じ使い方になりますが、VBAの関数として解説します。

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

Left関数:左から○文字を返す

【構文】Left(string,length)

string:取り出す文字列を指定します。

lengthstring(取り出す文字列)から取り出す(左からの)文字数を指定します。

■サンプルコード

Sub Left関数()
    MsgBox Left("東京都千代田区丸の内1丁目", 3)
End Sub

■実行結果

■サンプルコード解説

文字列である「東京都千代田区丸の内1丁」の左から3文字目までを取り出して、メッセージボックスに表示します。

■応用コード

Sub Left関数2()
    Dim Address As String
    Dim Mojisu As Long
    Address = "東京都千代田区丸の内1丁目"
    Mojisu = InStr(Address, "都")
    MsgBox Left(Address, Mojisu)
End Sub

■応用コード解説

変数のAddressとMojisuに値を代入し、変数の値からLeft関数で文字列を取り出し、メッセージボックスに表示します。

Instr関数は、”都”が○番目にあるかを返す関数です。近いうち別の記事でご紹介します。

実行結果は、サンプルコードと同じです。

Right関数:右から○文字を返す

【構文】Right(string,length)

string:取り出す文字列を指定します。

lengthstring(取り出す文字列)から取り出す(右からの)文字数を指定します。

■サンプルコード

Sub Right関数()
    MsgBox Right("山田太郎", 2)
End Sub

■実行結果

■サンプルコード解説

文字列である「山田太郎」の右から2文字目までを取り出して、メッセージボックスに表示します。

■応用コード

Sub Right2関数()
    Dim FullName As String
    Dim Mojisu As Long
    FullName = "山田 太郎"
    Mojisu = InStr(FullName, " ") - 1
    MsgBox Right(FullName, Mojisu)
End Sub

■応用コード解説

変数のFullNameとMojisuに値を代入し、変数の値からRight関数で文字列を取り出し、名字を除いて名前のみをメッセージボックスに表示します。

Instr関数は、「山田 太郎」から” “(半角スペース)が○番目にあるかを返す関数です。半角スペースも含みますので、-1した数値をMojisuに返すように調整しています。

実行結果は、サンプルコードと同じです。

Mid関数:○文字目~○文字目を返す

【構文】Mid(string,start,[length])

string:取り出す文字列を指定します。

start:取り出す文字列の開始位置を指定します。

lengthstring(取り出す文字列)から取り出す文字数を指定します。

■サンプルコード

Sub Mid関数()
    MsgBox Mid("東京都千代田区丸の内1丁目", 4, 4)
    MsgBox Mid("東京都千代田区丸の内1丁目", 4, 10)
    MsgBox Mid("東京都千代田区丸の内1丁目", 4)
End Sub

■実行結果

■サンプルコード解説

文字列である「東京都千代田区丸の内1丁目」の4文字目から後(東京都より後)を取り出して、メッセージボックスに表示します。

1回目は、4文字目から4文字取り出し「千代田区」を表示します。

2回目と3回目は、4文字目から最後まで取り出し「千代田区丸の内1丁目」を表示します。2つ目のコードは、10文字としていますが、文字数が多い場合はエラーが発生せず10文字以下の場合は、最後までの文字列を取り出して返します。

■応用コード

Sub Mid関数2()
    Dim Address As String
    Dim Mojisu1 As Long
    Dim Mojisu2 As Long
    Address = "東京都千代田区丸の内1丁目"
    Mojisu1 = InStr(Address, "都") + 1
    Mojisu2 = InStr(Address, "区") + 1 - Mojisu1
    MsgBox Mid(Address, Mojisu1, Mojisu2)
End Sub

■応用コード解説

文字列である「東京都千代田区丸の内1丁目」の東京都以降で○○区までを取り出してメッセージボックスに表示します。

Mojisu1は、Instr関数で”都”までの文字数を返し、+1することで、”都”より1つ後ろの文字を開始位置としています。
Mojisu2は、Instr関数で”区”までの文字数を返し、+1してMojisu1を引くことで、”区”までを取り出す文字数を計算しています。

実行結果は、サンプルコードの1回目と同じです。

コメント

タイトルとURLをコピーしました