【VBA】Left関数で左から文字を取り出します

 この記事では、VBA の Left 関数と LeftB 関数の使い方について説明します。

【VBA】Left関数

 Left は文字列の左から、指定した数だけ文字を取り出す関数です。

Left(文字列,取り出す文字の長さ)

 Left関数を使って、文字列 “ABCDEFGH” の左から 3 文字を抜き出してみます。

'[VBA] Left関数のサンプルコード

Sub Left_Test()

  Dim myword As String

  myword = "ABCDEFGH"

  'Left関数で左から3文字を抜き出す
  Debug.Print Left(myword, 3)

End Sub
ABC

 実用上は、抜き出す位置は「何番目から」よりも「特定の文字から」を指定できるほうが使い勝手がよさそうです。そこで「引数で指定した文字列を含めて左側を抜き出す関数」を作ってみました。よければ、自由にコピーしてお持ち帰りください。

'[VBA] 指定した文字列を含めて左側を抜き出す関数
Function LEFT_ST(mystr As String, mykey As String) As Variant
  Dim a As Integer, b As Integer, c As Integer
  If InStr(mystr, mykey) <> 0 Then
    a = InStr(mystr, mykey)
    b = Len(mykey)
    LEFT_ST = Left(mystr, a + b - 1)
  Else
    LEFT_ST = CVErr(xlErrNA)
  End If
End Function

 LEFT_ST 関数を使うときは

=LEFT_ST(対象文字列, 区切り位置)

と記述します。たとえばセル A1 に

京都府福知山市東九条東桃ノ本町 24

というデータが入っている場合、別のセルに

=LEFT_ST(A1, "市")

と入力すると「市」という文字を含めて

京都府福知山市

という文字列を返してきます。指定した文字列を含めたくない場合も、上のコードをちょっといじるだけでできると思うので、色々試してみてください。

【VBA】LeftB関数

 LeftB は文字列の左から、指定バイト数だけ文字を取り出します。

 LeftB(文字列,取り出す文字の長さ)

 VBA では文字コードに UTF-8 を使っているので、1 文字は 2 バイトです。LeftB関数を使って、”ABCDEFGH” の左から 8 バイト (4 文字) を抜き出してみます。

'[VBA] LeftB関数のサンプルコード

Sub Left_Test()

  Dim myword As String

  myword = "ABCDEFGH"

  'LeftB関数で左から4バイト(8文字)を抜き出す
  Debug.Print LeftB(myword, 8)

End Sub
ABCD

Left2関数

 抽出数を文字数とバイト数にするかは引数で指定するようにしたほうが便利かもしれません。というわけで、Left 関数とLeftB関数を1つにまとめた Left2 関数を作っておきました。

'[VBA] Left2関数
Function Left2(str As String, n As Integer, _
Optional b As Boolean = False)
  If b = False Then
    Left2 = Left(str, n)
  Else
    Left2 = LeftB(str, n)
  End If
End Function

 デフォルトでは指定文字数を抽出するようになっています。オプション引数 b に True (もしくは False 以外の何か) を指定するとバイト数だけ取り出します。

'[VBA] Left2関数のサンプルコード
Sub Left2_Test()
  Dim myword As String
  myword = "ABCDEFGH"
  Debug.Print Left2(myword, 4)
  Debug.Print Left2(myword, 4, True)
End Sub
ABCD
AB

コメント

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