指定した文字の左右を取り出すマクロ

 連休明けの最初の VBA 記事ですよー♪
 今回は 指定した文字の左右を取り出すマクロ を作ります♪

 たとえばあるセルに次のような住所データが入っているとします。

大阪府大阪市東住吉区打上元町 6-26-8

 このとき「大阪府大阪市」はいらないから、「市」という文字の右側を全部抜き出したいなあと思う場面もけっこうあると思います。そんなときに使えるユーザー定義関数 (Function Macro) を用意しましたよ。
 

指定した文字の右側を取り出すマクロ

 RIGHTST 関数は引数で指定した文字列の右側を抜き出します。

 Function RIGHTST(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(mystr)
  c = Len(mykey)

  RIGHTST = Mid(mystr, a + c, b)

 Else
  RIGHTST = CVErr(xlErrNA)

 End If

 End Function

 RIGHTST 関数は

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

という使い方をします。たとえばセル A1 に対象文字列である

大阪府大阪市東住吉区打上元町 6-26-8

という住所が入っている場合、別のセルに

=RIGHTST(A1,"市")

と入力すると

東住吉区打上元町 6-26-8

という文字列が返ってきます。対象文字列の中に区切り位置として指定した文字が含まれていなければ #N/A! のエラーを返します。
 

指定した文字の左側を取り出すマクロ

 LEFTST 関数は引数で指定した文字列を含めて左側を抜き出します。

 Function LEFTST(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)

  LEFTST = Left(mystr, a + b - 1)

 Else
  LEFTST = CVErr(xlErrNA)

 End If

 End Function

 LEFTST 関数を使うときは

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

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

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

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

=LEFTST(A1, "市")

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

京都府福知山市

という文字列を返してきます。RIGHTST 関数と LEFTST 関数は指定文字を含むか、含まないかという点で微妙に使い方がちがっているから注意してくださいねー。

 ≫ VBA の技術

スポンサードリンク
末尾大型広告
末尾大型広告
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)