【VBA】InStr関数で文字列検索


文字列検索をしたい時に使うのがInStr関数!プログラムを作る時によく使う関数だから、しっかりと使い方を見ておこう。

InStr関数は、文字列の中の特定の文字が先頭から何番目にあるかを返す関数だにゃ。使いこなすためには、その挙動と見つからなかった時にどんな風になるのかを確認しておくと良いんだにゃ。
- InStr関数の使い方と戻り値の扱い方
- Left関数やMid関数との組み合わせ方
- ループさせることで、文全体の検索方法
InStr関数とは

InStr関数は文字列の中から特定の文字が何番目にあるかを返す関数です。引数は4つありますが、2つは省略可能となっています。

InStr関数は文字列の中から特定の文字が何番目にあるかを返す関数です。引数は4つありますが、2つは省略可能となっています。
InStr([start, ]string1, string2[, compare])
引数 | 説明 |
start | <省略可能> 検索の開始位置を指定します。 省略した場合は、先頭の文字から検索されます。 |
string1 | <必須> 検索対象となる文字列を指定します。 |
string2 | <必須> string1から検索したい文字列を指定します。 |
compare | <省略可能> バイナリモードかテキストモードを選択します。 compareを指定した場合は、startも指定も必須です。 省略すると、バイナリ モードになります。 |

単純に文字列検索をする場合は、引数2つで使うんだにゃ。ちなみにバイナリモードとテキストモードを指定する場合は、次の引数を指定するんだにゃ。
定数 | 値 | 説明 |
vbBinaryCompare | 0 | バイナリ モードで比較をします。 全角半角、大文字小文字が区別されます。 |
vbTextCompare | 1 | テキスト モードで比較を行います。 全角半角、大文字小文字が区別されません。 |

戻り値については、見つかった場合、先頭からも文字数目を返します。でも見つからないときは、「0」を返します。
戻り値は・・・
- 見つかった場合 → 最初に見つかった文字位置(先頭からその位置までの文字数)を返す
- 見つからなかった場合 → 0を返す
実際の使用例

基本的な使い方は次のとおりですね。
基本的な使い方
// 文字列から特定の文字を返す
Sub sample()
Dim str As String
str = "あいうえお"
Debug.Print InStr(str, "い")
End Sub
>> 2

文字列「あいうえお」から「い」を見つけるんだにゃ。引数は2つだけ指定して、2番目にある「い」が見つかっているんだにゃ。

基本通りの使い方ですが、こんな感じには実務では使わないかもしれませんね。
区切り文字で文字を分割する
// 空白文字を見つけて、文字を分割する
Sub sample()
Dim str As String
str = "山田 太郎"
s = InStr(str, " ")
Debug.Print Left(str, s)
Debug.Print Mid(str, s + 1)
End Sub
>> 山田
>> 太郎

特定の区切り文字(上記例では空白文字)を見つけてきて、Left関数とMid関数で分割できます。split関数的な使い方です。セルの中の文字を分割することもできるし、区切り文字で判定してifで分岐もできますね。
同じ文字がたくさんある場合
// 文字列から同じ文字を複数見つける
Sub sample()
Dim str As String
str = "あいうえおあいうえおあいうえお"
start = 1
start = InStr(start, str, "う")
Do While start > 0
Debug.Print start & "番目に「う」があります。"
start = InStr(start + 1, str, "う")
Loop
End Sub
>> 3番目に「う」があります。
>> 8番目に「う」があります。
>> 13番目に「う」があります。

InStr関数は、最初の文字を見つけるとそこでストップしちゃうんだにゃ。でも、見つからなかった場合「0」を返す性質と、Do Loop関数を使えば、複数の文字も検索できるんだにゃ。

プログラミングは簡単な関数の組み合わせです。是非覚えて、組み合わせていろいろなプログラムを作ってみてくださいね。
プログラミングを学ぶならTechAcademy(テックアカデミー)がおすすめ!

独学で苦戦している人は、一度しっかりと基礎を学ぶと次のステップへ進めますよ。今のおすすめは、TechAcademy(テックアカデミー)ですね。
- オンラインで選抜された現役エンジニアから学ぶことができる
- 自宅からWeb制作・プログラミング・アプリ開発など幅広い分野を学べる
- 学ぶだけではなく、転職の支援、副業に活かせるスキルの習得、副業の仕事紹介まで行っている

無料体験や相談もあるから、一度試してみてもいいんだにゃ!
\無料体験、無料相談はこちらから/