VBAのMid関数とは?Mid関数の構文や使い方を解説
ある文字列の中から、一部の文字を取り出して使いたいことはありませんか。
そんな時には、Mid関数、Left関数、Right関数等を利用すると、特定の文字列を取り出すことができます。
ここでは、「文字列の途中から一部の文字を取り出したい」場合に利用する、Mid関数について説明します。
目次
1.Mid関数について
1-1.Mid関数とは
Mid関数とは、VBAの文字列操作の1つです。
Mid関数は、文字列の指定した位置から、指定した数の文字列を取り出して返します。固定長のファイルなどで、取り出したい文字列の開始位置や文字数が決まっているときには便利です。
1-2.Mid関数の構文
Mid(文字列, 開始位置)
Mid(文字列, 開始位置, 文字数)
文字数は省略可能です。省略した場合、開始位置以降のすべての文字を返します。開始文字を1としてカウントします。
2.Mid関数の使用例
2-1.基本的な使用例
Mid("あいうえabc",3)
実行結果: うえabc
解説:「あいうえabc」の3文字目以降のすべての文字を返します。
Mid("あいうえabc",3, 2)
実行結果: うえ
解説:「あいうえabc」の3文字目から2文字を返します。
※Mid関数では、全角・半角の区別をつけずに、1文字としてカウントします。
2-2.特殊な書き方をした場合の実行結果
文字数に、実際の文字列よりも大きい値を入力した場合、開始位置より末尾までを返します。
Mid("あいうえabc",3, 10)
実行結果: うえabc
解説:「あいうえabc」は10文字以下であるため、3文字目以降のすべて文字を返します。
これは、2-1.のMid(“あいうえabc”,3, 2) と同様の実行結果になります。
開始位置に、実際の文字列よりも大きい値を入力した場合、空文字を返します。
Mid("あいうえabc",10, 2)
実行結果: (空文字)
解説:「あいうえabc」は10文字以下であるため、開始位置以降に文字が存在せず、“”を返します。
2-3.その他使用例
あらかじめ文字数が決まっている文字列に関しては、以下のような変換が可能です。
- 日付の型変換(yyyy/mm/dd ⇔ yyyymmdd)
2018/11/04→Mid("2018/11/04",1,4) & Mid("2018/11/04",6,2) & Mid("2018/11/04",9,2)
- 最大100文字の文字列を50文字ずつに分ける
Mid(文字列,1,50) Mid(文字列,51)
2-4.ほかの関数と組み合わせた使用例
文字列の開始位置が決まっていない場合は、InStr関数で開始位置を取得します。
「あいうえabc」という文字列の、「え」から始まる3文字を抜き出したい場合、まず、「え」の文字が何文字目にあるかをカウントします。
InStr(1, "あいうえabc","え") = 4
上記の通り、「え」は4文字目に位置するので、4を返します。これをMid関数と組み合わせると
Mid("あいうえabc", InStr(1, "あいうえabc","え"), 3)
は
Mid("あいうえabc", 4, 3)
と同じ意味になるので、
実行結果: えab
となります。
3.MidB関数について
MidB関数は文字列内の指定位置から指定したバイト数分の文字列を返します。
構文はMid関数と同じです。
ただし、VBAでは全角も半角も1文字を2バイトとしてカウントするため、開始位置の指定には注意が必要です。
MidB("あいうえabc",3, 2)
実行結果: い
解説:「あいうえabc」の3バイト目(2文字目)から2バイト(1文字)を返します。
MidB("あいうえabc",2, 2)
実行結果: ?
解説:「あいうえabc」の2バイト目からはカウントできず、実行結果が?となります。
4.最後に
以上、Mid関数について、基本的な構文と使用例をまとめました。
Mid関数とMidB関数に関しては、用途を明確にした上で、使い分けてください。
コメント