文字列の切り出しに使う関数にLeft、Right、Midがあります。今回は、使用例を交えて使い方を解説します。
文字列の切り出し
例えば、Excel VBAやAcccess VBAの文字列からVBA、東京都千代田区や東京都文京区から東京都という文字列を切り出したい、という場合にはLeft, Right, Midという文字列関数を使用します。
文字列の左端から切り出すLeft, 右端から切り出すRight
この2つの関数は、任意の文字列に対し、
左端から何文字切り出す:Left(文字列, 文字数)
右端から何文字切り出す:Right(文字列, 文字数)
というように使います。
文字列には、文字列が代入されたセルを指定可能です。文字数は0以下は指定できません(指定するとエラーとなる)。ここも数値が代入されたセルを指定可能です。
今回は簡単ですが、上のように、セルに代入された文字列・数値を使用します。以下では、Leftを使った切り出しを行ってみます。
マクロ例
1 2 3 4 5 6 7 8 9 10 |
Sub LEFT_Samlple() Dim strLeft as String 'セルB2に文字列、セルC2に数字を予め入れておくこと。 strLeft = Left(Cells(2, 2), Cells(2, 3)) Msgbox strLeft End Sub |
[実行結果]
左端から、6つの文字が出力されました。
任意の文字位置から切り出すMid
Left, Rightの弱点として、切り出しの開始位置を任意に指定できないというのがあります。任意の位置から切り出したいときにはMid(文字列, 開始位置, 文字数)を使います。
各項目については、文字数のみ省略可能です(省略した場合、開始位置以降の文字を全て取得します)。またMidも、開始位置・文字数は0以下を指定できません(指定するとエラーとなる)。また、下記のように条件を満たすセルを指定可能です。上の例を用いて結果を示してみます。
マクロ例:
1 2 3 4 5 6 7 8 9 10 |
Sub Mid_Sample_01() Dim strMid as String 'セルB2に文字列、セルC2,D2に数字を予め入れておくこと。 strMid = Mid(Cells(2, 2), Cells(2, 3),Cells(2, 4)) Msgbox strMid End Sub |
[実行結果]
先頭から6番目の文字から、15個の文字が出力されました。
但し、開始位置が文字列によって異なる場合や、開始位置と文字数が場合によってそれぞれ異なるという複雑な切り出しにはMidだけでは対応ができませんので、InStr関数やInStrRev関数を組み合わせる必要があります。(詳細はInStr関数やInStrRev関数をご参考下さい。)
切り出し文字のカウント注意点
アルファベットやスペースなどの文字の種類や、全角・半角の種類を問わず、1文字としてカウントします。また、文字数に小数値を指定すると、四捨五入した値で切り出しを行います(例:3. 5であれば4、 3. 2であれば3となります。)