プログラミング初心者向けのVBA入門講座第17回です。
→過去の入門講座目次はこちら
前回に引き続きよく使われる関数を紹介します。
今回は文字列を操作するための関数です。
文字列を検索し存在位置を返す関数(Instr関数)
Instr(文字列, 検索文字列)
最初の引数の文字列の中に、次の引数の検索文字列が最初に現れる位置を伊庭する整数を返します。
MsgBox Instr(“VBA入門”, “入門”)
文字列の中に検索文字列が含まれないときは「0」を返します。
MsgBox Instr(“VBA入門”, “講座”)
このことを利用してInstr関数が0か否かで検索文字列が含まれるかどうかの判別をすることができます。
次のコードではA列に記載された住所に”東京都”が含まれる場合、そのB列に”〇”を表記します。
Sub sample01()
Dim i As Long
For i = 1 To 5
If InStr(Cells(i, 1).Value, "東京都") <> 0 Then
Cells(i, 2).Value = "〇"
End If
Next i
End Sub
文字列の文字数を返す関数(Len関数)
Len(文字列)
引数に指定した文字列の文字数を返します。
MsgBox Len(“VBA入門”) ‘//→「5」
指定した文字数の文字列を返す関数(Left関数、Right関数、Mid関数)
Left(文字列, 文字数)
Right(文字列, 文字数)
Mid(文字列, 開始位置, 文字数)
Left関数は文字列の左端から指定した文字数分の文字列を返します。
Right関数は文字列の右端から指定した文字数分の文字列を返します。
Mid関数は文字列のうち指定した開始位置から文字数で指定した分の文字列を返します。Mid関数で3つ目の引数「文字数」を省略すると開始位置から最後までの文字列を返します。
MsgBox Left(“VBA入門講座”, 3) ‘//→「VBA」
MsgBox Right(“VBA入門講座”, 2) ‘//→「講座」
MsgBox Mid(“VBA入門講座”, 4, 2) ‘//→「入門」
MsgBox Mid(“VBA入門講座”, 4) ‘//→「入門講座」
応用サンプルコード
Instr関数とLeft関数やMid関数を組み合わせることで文字列を特定の文字で区切ってわけることが可能です。
次のコードではA列に記述されている東京都の住所を東京都〇〇区の「区」の前後でB列、C列にふりわけています。
Sub sample02()
Dim i As Long
Dim buf As Long
For i = 1 To 5
buf = InStr(Cells(i, 1).Value, "区")
Cells(i, 2).Value = Left(Cells(i, 1).Value, buf)
Cells(i, 3).Value = Mid(Cells(i, 1).Value, buf + 1)
Next i
End Sub
A列にある文字列の「区」の位置をInstr関数で取得して変数「buf」に格納しています。
B列はLeft関数で先頭からbufの文字数分(~区)を表示します。
C列はMid関数で開始位置に「区」の次の位置として「buf + 1」を指定し、文字数の引数を省略することで開始位置から最後までの文字列を表示しています。
コメント