ExcelのVBAで文字列を検索する方法(8例)

  • これを共有
Hugh West

インプリメンテーション ブイビーエー は、Excelであらゆる操作を実行するための最も効果的で、最も速く、最も安全な方法です。 この記事では、与えられた文字列の中から特定の文字列を見つける方法を紹介します。 ブイビーエー をExcelで表示します。

練習用テンプレートダウンロード

練習用Excelテンプレートは、こちらから無料でダウンロードできます。

String.xlsmの中を検索するVBA

InStr関数

Microsoft Excel には、次のような組み込み関数があります。 InStr関数 を使えば、与えられたStringの中の特定の文字列の位置を見つけることができます。

一般的な構文です。

InStr([start]、string1、string2、[compare])

これです。

論証 必須/オプション 定義
立ち上がり オプション 検索開始位置。
  • デフォルトでは インストル 関数は、文字の位置を開始位置からではなく、1から数えて計算します。 ですから、必要であれば、この部分を空白にすることができます。
ストリングス1 必須 検索対象となる文字列、Primary String。
ストリングス2 必須 一次文字列の中で検索する文字列。
合わす オプション があります。 インストル 関数はデフォルトで大文字と小文字を区別します。 しかし、大文字と小文字を区別せずに インストル この引数には以下の値を指定することができます。
  • vbBinaryCompare -バイナリ比較を行い、戻り値を0とします。
  • vbTextCompare -テキスト比較を実行、戻り値1
  • vbDatabaseCompare -データベース比較を実行し、返り値を 2 とする。

デフォルトでは インストル とりあつかい vbBinaryCompare をcompareの引数として指定します。

VBAで文字列中の特定の文字列の位置を検索する8つの簡単な例

を使って、与えられた文字列の中のある文字列の位置を取得する簡単な例を見てみましょう。 ブイビーエー .

1.文字列の位置を検索するVBA

以下はその例です。 インストル を使って、文字列の中のテキストの位置を見つけることができます。

  • プレス Alt + F11 キーボードから、またはタブで 開発者 -> Visual Basic を開く Visual Basic エディター .

  • ポップアップ・コードウィンドウで、メニューバーから インサート -> モジュール .

  • 次に、コードウィンドウに、簡単な インストル の中にあるプログラムです。 VBA サブプロシージャ (を参照してください)。
 Sub INSTR_Example() MsgBox InStr("Happiness is a choice", "choice") End Sub 

これであなたのコードは実行できるようになりました。

  • プレス F5 をキーボードで入力するか、メニューバーから Run -> Run Sub/UserForm をクリックするだけでもOKです。 スモールプレイアイコン をクリックすると、マクロが実行されます。

ポップアップメッセージボックスで 位置指定番号 を確認することができます。

説明する。

私たちの主要な文字列である" しあわせは選択するもの " は21文字(スペースあり)の文章で、その位置を求めるために " 選択 「という文字列が表示されます。 選択 「は主音列の16番目の位置から始まっているので、番号 16 をメッセージボックスに出力します。

2.文字列の特定位置から文字列を検索するVBA

では、ある数字から位置を求めるとどうなるかを調べてみましょう。

  • 先ほどと同じように、開く Visual Basic エディター から デベロッパー タブと インサート a モジュール をコードウィンドウに表示します。
  • コードウィンドウに、簡単な インストル のプログラムを作成し、テキストをカウントしたい位置に応じて start 引数に値を渡します。
 Sub INSTR_Example() MsgBox InStr(17, "Happiness is a choice", "choice") End Sub 

  • 次のページ 実行 を表示します。

ポップアップメッセージボックスで 位置指定番号 原文のまま 発進 を確認したかったのでしょう。

説明する。

すでに(フェーズ1の議論から)わかっていたことですが、このテキストは " 選択 「の位置からスタートしました。 16 を2つ挿入しました。 選択 「を主文字列に設定し 17 を1番目のパラメータとして指定することで、最初の" 選択 ". だから、私たちは 実行 上記のマクロを実行すると、位置番号が表示されました。 27 の位置番号と同じです。 第二 " 選択 " を指定した文字列の中に入れてください。

3.文字列の大文字と小文字を区別するInStr関数でテキストを検索するVBA

の導入から インストル 関数は、すでにご存知のように、デフォルトでは インストル 関数では大文字と小文字が区別されます。 例を挙げてそれを確認してみましょう。

以下をご参照ください。 ブイビーエー という単語の位置を探したいと思っていたところ、このコードを見つけました。 選択 " をつけています。 キャピタルの "C" という文字列の中に、" しあわせは選択するもの " と書かれており、ここで choice は c .

  • 実行 を検索してください。 0 を出力とします。

というのも インストル 関数の扱い キャピタルの "C" c という単語を検索しました。 選択 「という文字列があり、それにマッチしなかったので 0 .

  • を作るには インストル 機能 ケースインセンシティブ に、compare 引数を設定する。 vbTextCompare (を参照してください)。
 Sub INSTR_Example() MsgBox InStr(1, "Happiness is choice and choice", "Choice", vbTextCompare) End Sub 

  • 実行 を表示します。

を手に入れることができます。 テキストの位置 で書かれているかどうかを、文字列から判断します。 大文字小文字 .

4.文字列の右から文字を検索するVBA

今までは インストル 関数は、文字列の左側からの位置しか教えてくれませんでした。 しかし、文字列の右側からの位置を求める場合はどうでしょう。

InStrRev関数 は右から検索します。 InStrRev 関数は インストル という関数があり、この関数を使うとテキストの位置がわかります。 右側 を文字列の

以下の例を参照して、その違いを理解してください。

  • で以下のコードを実行すると インストル 関数はその後

の位置がわかります。 16 )の最初のテキスト" 選択 ".

  • しかし、同じコードを InStrRev じゃあ、機能。

の位置がわかります。 27 )の最後のテキスト" 選択 ".

類似の読み物。

  • FindNext ExcelでVBAを使用する(2例)
  • VBAを使った検索と置換の方法(11の方法)
  • ExcelのVBAを使った完全一致の検索(5つの方法)

5.文字列中の文字の位置を検索するVBA

また、文字列の中のある文字の位置も、テキストを見つけたのと同じ方法で見つけることができます。

  • 次のコードをコピーして、あなたの ブイビーエー コードウィンドウ
 Sub Find_Character() Dim z As Long z = InStr("Happiness is a choice", "e") MsgBox z End Sub 

  • そして 実行 マクロの

最初の" e 「は、この文字列の番号 7 の位置づけになります。

6.文字列の中の部分文字列を検索するVBA

ここでは、文字列の中に 部分文字列 かどうか。

それを得るためには IFステートメント をコードに追加しました。

  • 先ほどと同じように、開く Visual Basic エディター から デベロッパー タブと インサート a モジュール をコードウィンドウに表示します。
  • コードウィンドウで、以下のコードをコピーして貼り付けます。
 Public Sub FindSub() If InStr("Happiness is a choice", "choice") = 0 Then MsgBox "No match found" Else MsgBox "Match found" End If End Sub 

これであなたのコードは実行できるようになりました。

  • 実行 マクロの

もし、あなたが の文字列が含まれる。 を取得します。 一致 この例では、主文字列の " しあわせは選択するもの " には、" 選択 「を取得します。 一致するものが見つかりました の結果です。

7.セル範囲内の文字列を検索するVBA

文字列のセル範囲からある文字列を検索して、ある文字列を返すことができます。

次の例を見てください。 博士 " を返し、一致した場合は " ドクター ".

  • 以下は、上記の結果を得るためのコードです。
 Sub Find_String_in_Range() Dim cell As Range For Each cell In Range("B5:B10") If InStr(cell.Value, "Dr.")> 0 Then cell.Offset(0, 1).Value = "Doctor" End If Next cell End Sub 

  • 実行 を実行したところ、以下のような結果が得られました。

  • 例えば、".NET "を検索したい場合は、"NET "マクロを修正することができます。 教授 を文字列の任意のセルで実行し、"" を取得します。 教授 「を戻り値として渡すだけで、" 教授 「の代わりに値として" 博士 マクロの4行目に". "を、4行目に". 教授 " の代わりに " ドクター 「をマクロの5行目に記述し、それに合わせてセル範囲番号を定義してください。

8.セル内の文字列を検索するVBA

も可能です。 文字列の単一セル内の特定のテキストを検索する で、ある文字列を返します。

  • 以下のコードをコピーして、コードウィンドウに貼り付けてください。
 Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doctor" End If End Sub 

を検索することになります。 博士 " である。 セルB5 を返し、一致した場合は" ドクター " である。 セルC5 .

  • 例えば、".NET "を検索したい場合は、"NET "マクロを修正することができます。 教授 を文字列の任意のセルで実行し、"" を取得します。 教授 「を戻り値として渡すだけで、" 教授 「の代わりに値として" 博士 マクロの2行目に".を、3行目に". 教授 " の代わりに " ドクター 「をマクロの3行目に記述し、それに従ってセル参照番号を定義します。

結論

この記事では、Excelで文字列の中の特定のテキストを検索する方法を紹介しました。 VBAマクロです。 この記事が皆様のお役に立てれば幸いです。 また、ご質問等ございましたらお気軽にお寄せください。

Hugh West は、業界で 10 年以上の経験を持つ、非常に経験豊富な Excel トレーナー兼アナリストです。彼は会計と財務の学士号と経営管理の修士号を取得しています。ヒューは教えることに情熱を持っており、理解しやすい独自の教育アプローチを開発しました。彼の Excel に関する専門知識は、世界中の何千人もの学生や専門家がスキルを向上させ、キャリアで優れた成果を上げるのに役立ってきました。 Hugh はブログを通じて知識を世界に共有し、個人や企業が潜在能力を最大限に発揮できるよう無料の Excel チュートリアルとオンライン トレーニングを提供しています。