こんにちは、ぐーです!
今回は、プログラミングに苦手意識がある方でも今日からすぐに活用できる、VBAの文字列検索関数「InStr(インストリング)」と「InStrRev(インストリング・リバース)」の使い方を解説します。
InStr関数とは?(本の中の探したい言葉を見つける案内人)
InStr関数は、ひと言でいうと「指定した文字が、左から数えて何番目にあるか?」を教えてくれる関数です。
WordやExcelで「Ctrl + F」を押して文字を検索しますよね?あれをVBAに自動でやってもらうイメージです。
InStr関数は「対象の文字列の中から特定のキーワードを検索し、最初に見つかった位置(先頭からの文字数)を数値で返す」という役割を持っています。
百聞は一見に如かず。実際にコピペして動かせるコードを見てみましょう。
【コード例】InStr関数(左から探す)
Sub CheckString()
Dim targetText As String
Dim searchWord As String
Dim position As Integer
' 検索される側の文字を設定します
targetText = "東京都渋谷区道玄坂"
' 探したい文字を設定します
searchWord = "渋谷"
' InStr関数で「渋谷」が何文字目にあるかを探します
position = InStr(targetText, searchWord)
' 結果を判定します(見つかった場合は1以上の数字が入ります)
If position > 0 Then
MsgBox position & "文字目に見つかりました!"
Else
MsgBox "見つかりませんでした。"
End If
End Sub
このコードを実行すると、「東京都渋谷区」の「渋」は4文字目にあるため、「4文字目に見つかりました!」というメッセージが表示されます。
もしキーワードが見つからなかった場合は「0」が返ってくるので、判定も非常にスムーズに行えます。
右から探したい時は「InStrRev」の出番!
InStr関数が「玄関(左)」から探し始めるのに対し、「裏口(右)」から探し始めてくれるのが「InStrRev関数」です。
「え?右から探す意味ってあるの?」と思うかもしれません。実はこれ、「ファイル名から拡張子(.xlsx や .pdf など)だけを取り出したい時」にめちゃくちゃ役立ちます!
【コード例】InStrRev関数(右から探す)
Sub GetFileExtension()
Dim fileName As String
Dim searchWord As String
Dim position As Integer
' ファイル名を設定します
fileName = "sales_report_2026_final.xlsx"
' 探したい文字(ピリオド)を設定します
searchWord = "."
' InStrRev関数で右側から「.」を探します
position = InStrRev(fileName, searchWord)
' 見つかった場合、その場所から後ろの文字(拡張子)を取り出します
If position > 0 Then
' Mid関数を使って、ピリオドの次の文字から最後までを切り取ります
MsgBox "このファイルの拡張子は " & Mid(fileName, position + 1) & " です!"
Else
MsgBox "拡張子がありません。"
End If
End Sub
ファイル名には「report_ver.1.2.xlsx」のように、ピリオドが複数含まれるケースがあります。
左から探すと最初のピリオドで止まってしまいますが、右から探せば確実に「一番最後のピリオド(=拡張子の直前)」を特定できるのです。
まとめ:関数を味方につけよう
いかがでしたでしょうか?
「InStr」と「InStrRev」を使い分けることで、特定の文字が含まれているかを一瞬で判定できるようになります。
- InStr: 左から探す(特定のキーワードが含まれているかのチェックに最適)
- InStrRev: 右から探す(ファイルの拡張子特定などに最適)
プログラミングは難しく捉えられがちですが、その本質は私たちが普段行っている「探す」という作業の自動化にあります。
ぜひ今回のコードを日々の業務に取り入れて、面倒な目視チェックの時間を少しずつ減らしてみてください!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント