こんにちは、ユーキです。
今回は、VBAで文字列を抜き出す関数(Mid、Left、Right)を紹介します。
文字列を抜き出す関数
文字列を抜き出す関数はいくつかあります。ひとつずつ紹介したいと思います。
任意の位置の文字数を抜き出す(Mid関数)
いちばんオーソドックスな方法が、Mid関数を使う方法になります。
Dim txt As String
txt = Mid("こんにちは", 2, 1)
MsgBox txt
上記の処理を実行すると、「ん」が表示されます。
解説をすると、Mid関数の第1引数は対象文字列、第2引数が何番目の文字から取得するか、第3引数が何文字取得するか、になります。
さきほどのサンプルコードの「Mid(“こんにちは”, 2, 1)」を例にすると、「こんにちは」という文字列から、2番目の文字から1文字取得するという命令になり、戻り値は「ん」が返ります。
第3引数は取得する文字数で省略が可能で、第3引数を省略した場合、指定した文字数の最後までを取得するという指定になります。「Mid(“こんにちは”, 3)」とした場合、戻り値は「にちは」となります。
第2引数に、指定文字よりも大きい値を指定した場合、戻り値は「””(長さ0の文字列:いわゆる空文字)」となります。例えば、Mid(“こんにちは”, 7, 2)のような指定の仕方が該当します。まだ、第2引数は1以上の数値でなければならず、0や-1などを指定するとエラーとなります。
先頭から指定文字数抜き出す(Left関数)
先頭から指定文字数抜き出すことは、Mid関数でも指定は可能ですが、Left関数で取得することも可能です。
Dim txt As String
txt = Left("こんにちは", 3)
MsgBox txt
上記の処理を実行すると、「こんに」が表示されます。
Left関数もMid関数とほぼ同じです。何文字目から取得するかを指定する引数がないだけになります。
第1引数で対象文字列、第2引数で抜き出す文字数を指定します。
末尾から指定文字数抜き出す(Right関数)
Right関数も、Left関数、Mid関数とほぼ同じです。末尾から何文字取得するかを指定して、文字を抜き出す関数になります。
Dim txt As String
txt = Right("こんにちは", 2)
MsgBox txt
上記の処理を実行すると、「ちは」が表示されます。
抜き取る文字数をバイト数で指定する関数
文字数ではなく、バイト数で抜き出す関数もあります。それぞれ、MidB関数、LeftB関数、RightB関数となります。末尾に「B」が付く形になります。
Dim txt As String
txt = MidB("こんにちは", 3, 2) ’3バイト目から2バイトを抜き出す
Debug.Print txt ’「ん」が出力される
txt = LeftB("こんにちは", 4) ’4バイト目までを抜き出す
Debug.Print txt ’「こん」が出力される
txt = RightB("こんにちは", 6) ’文末から6バイト目を抜き出す
Debug.Print txt ’「にちは」が出力される
上記はすべて、「バイト数」での指定となります。「MidB(“こんにちは”, 3, 2)」の場合、3バイト目から2バイトを抜き出すとなります。
文字の途中で抜き出しができない場合は、エラーにはなりませんが、正しい文字列は取得されなくなります。
まとめ
今回は、文字列を抜き出す関数(Mid、Left、Right)についての紹介でした。
- 汎用的な文字列抜出は、Mid関数
- 先頭から文字を抜き出す場合は、Left関数
- 末尾から文字を抜き出す場合は、Right関数
- バイト数で抜き出ししたい場合には、MidB関数、LeftB関数、RightB関数
少しでもお役に立てば、幸いです。