こんにちは、ヒガシです。
このページでは、指定した文字列に対して、右から特定の文字を順番に探索していき、見つけたところまでの文字列を右から切り取る方法をご紹介していきます。
例えば以下のようになんらかのファイルのフルパスが記載されているとします。
こんなときに¥を特定も文字として指定することで、ファイル名だけを取り出すことができます。
以降ではこの例をベースに実演していきます。
それではさっそくやっていきましょう!
InStrRev関数の紹介
そもそも今回紹介した内容を実施するうえで、非常に便利な関数がVBA上にはあらかじめ備わっています。
それがここで紹介するInStrRev関数です。
この関数は文字列と探索文字を指定することで、探索文字を全体の文字列に対して右から順番に探索していき、見つけたところの文字数を返してくれるというものです。
ここで注意が必要なのは、見つけたところの文字数というのは右からではなく左から数えた時の結果になります。
先ほどのファイルのフルパスを例にとると以下のような感じです。
そしてこのInStrRev関数の使い方は以下の通りです。
実際の使用例は以降のサンプルコードで紹介します。
右から特性の文字までを切り取るサンプルコード
それでは本題である右から特定の文字までを切り取るVBAプログラムをご紹介します。
冒頭にも紹介した通り、今回は以下の文字列から¥以降の文字を切り取ってみようと思います。
以下がそのサンプルコードです。
Sub Get_Right()
Dim all_string As String
Dim split_char As String
'探索する文字列が書いてあるセルを指定
all_string = Cells(2, 1)
'探索文字列の長さを取得しておく
all_string_num = Len(all_string)
'探索する文字列を指定する
split_char = "\"
'指定した文字列を右から探索した際に、それが左から何番目にあるか確認
split_point = InStrRev(all_string, split_char)
'指定した文字列よりも右側だけを取り出す
Right_string = Right(all_string, all_string_num - split_point)
'結果を出力する
MsgBox Right_string
End Sub
コード中にコメントをつけていますので、やっていることはだいたいイメージできるのではないかと思います。
いずれにせよ、InStrRev関数の中身をよく理解することが非常に重要ですね。
サンプルコードの実行結果確認
それでは先ほどのプログラムを実際に実行してみます。
以下の結果が得られました。
問題なく¥よりも右側だけを切り取ることができていますね。
おわりに
ということで今回は指定した文字列から特定の文字列よりも右側だけを取り出す方法をご紹介しました。
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
ぜひ他の記事ものぞいてみてください。
それではまた!
コメント