ExcelのVBAを使用して完全一致を検索する方法(5つの方法)

  • これを共有
Hugh West

を使用して完全一致を検索する最も簡単な方法をお探しなら、次のとおりです。 ブイビーエー では、さっそく完全一致の検索方法をご紹介しましょう。

ワークブックダウンロード

VBA 完全一致の検索.xlsm

VBAを使用して完全一致を検索する5つの方法

この表は、何人かの生徒の結果を記録したものですが、この表を使って、完全一致を見つけるためのさまざまな方法を、以下の助けを借りて説明します。 VBAです。

今回は、Microsoft Excel 365のバージョンを使用しましたが、他のバージョンを使用することも可能です。

方法-1:セル範囲から完全一致を探す

生徒の名前のような文字列の完全一致を見つけ、その生徒のセル位置を見つけたい場合、このメソッドに従うことでこれを行うことができます。

ここでは、以下の名前の生徒の完全一致を探します。 "ジョセフ・ミカエル" .

Step-01 :

➤に移動します。 デベロッパー タブ>> ビジュアルベーシック オプション

その後 Visual Basic エディター が開きます。

➤に移動します。 インサート タブ>> モジュール オプション

その後 モジュール が作成されます。

ステップ02 :

➤ 次のコードを書いてください。

 Sub searchtxt() Dim rng As Range Dim str As String Set rng = Sheets("exact match").Range("B5:B10").Find("Joseph Michael", LookIn:=xlValues) If Not rng Is Nothing Then str = rng.Address MsgBox (rng & " in " & str) End If End Sub 

これです。 「完全一致 はシート名で "B5:B10" は生徒の名前の範囲であり "ジョセフ・マイケル" は、判明している生徒の名前です。

リュウグウノツカイ はレンジオブジェクトとして宣言され ストリング を、検索された項目のアドレスを格納するための文字列変数として使用する。

があります。 イフ ステートメントを使用すると、アイテムのアドレスが ストリング の変数になります。

➤プレス F5

結果 :

その後、以下のようになります。 メッセージボックス という名前の生徒のセル位置が含まれています。 "ジョセフ・マイケル" .

続きを読む ExcelのVBAで範囲検索:完全一致と部分一致を含む

方法-2:VBAを使って完全一致を検索し、置換する。

表示されている生徒の名前を見つけ、なぜか間違ってここに書かれているため、別の名前に置き換える方法を紹介します。 できます。 目的の文字列を探し、置き換える を、この方法に従って行ってください。

Step-01 :

➤フォロー Step-01 方法-1

 Sub FindandReplace() Dim rng As Range Dim str As String With Worksheets("find&replace").Range("B5:B10") Set rng = .Find("Donald Paul", LookIn:=xlValues) If Not rng Is Nothing Then str = rng.Address Do rng.Value = Replace(rng.Value, "Donald Paul", "Henry Jackson") Set rng = .FindNext(rng) Loop While Not rng Is Nothing End If End With End Sub. 

これです。 "find&replace"(検索と置換)。 はシート名で "B5:B10" は生徒の名前の範囲であり "ドナルド・ポール" は、調べるべき生徒の名前であり、次に "ヘンリー・ジャクソン" は前の名前ではなく、生徒の名前になります。

WITH ステートメントを使用すると、すべてのステートメントでコードの一部が繰り返されるのを避けることができます。

があります。 イフ ステートメントを使用すると、アイテムのアドレスが ストリング 変数と DO ループは、検索語のすべての出現箇所を置き換えます。

➤プレス F5

結果 :

その後、新しい生徒の名前を "ヘンリー・ジャクソン" .

方法-3:完全一致と大文字・小文字を区別して検索する

大文字と小文字を区別して検索したい場合は、この方法に従ってください。 ここでは、2つの名前が互いに似ていますが、大文字と小文字が異なるため、最後の生徒の名前を置き換えることにします。

Step-01 :

➤フォロー Step-01 方法-1

 Sub exactmatch() Dim rng As Range Dim str As String With Worksheets("case-sensitive").Range("B5:B10") Set rng = .Find("Donald Paul", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) If Not rng Is Nothing Then str = rng.Address Do rng.Value = Replace(rng.Value, "Donald Paul", "Henry Jackson") Set rng = .FindNext(rng) Loop While Not rng Is Nothing End If End With Endサブ 

これです。 「ケースセンシティブ はシート名で "B5:B10" は生徒の名前の範囲であり "ドナルド・ポール" は、調べるべき生徒の名前であり、次に "ヘンリー・ジャクソン" は前の名前ではなく、生徒の名前になります。

WITH ステートメントを使用すると、すべてのステートメントでコードの一部が繰り返されるのを避けることができます。

があります。 イフ ステートメントを使用すると、アイテムのアドレスが ストリング 変数と DO ループは、検索語のすべての出現箇所を置き換えます。

➤プレス F5

結果 :

さて、この件によると、生徒の名前は、以下のように変更されるとのことです。 "ヘンリー・ジャクソン" .

類似の読み物。

  • ExcelのVBAを使用してセル内の文字列を検索する方法(2つの方法)
  • VBA Excelの列の検索(7つのアプローチ)
  • ExcelのVBAで文字列を検索する方法(8例)

方法-4:InStr関数を使用する

をマッチングさせたいとします。 パス または 対応に失敗する に応じて、生徒の名前に 結果欄 どこ パス または 失敗 が書かれています。 結果欄 を書き留める。 "合格" において ステータス欄 合格者向けには InStr関数 .

Step-01 :

➤フォロー Step-01 方法-1

 Sub Checkstring() Dim cell As Range For Each cell In Range("C5:C10") If InStr(cell.Value, "Pass")> 0 Then cell.Offset(0, 1).Value = "Passed" Else cell.Offset(0, 1).Value = " " End If Next cell End Sub 

ここでは、セル範囲が C5:C10 というものである。 結果欄

InStr(cell.value, "Pass")> 0 は、数値が0より大きい状態(セルに "合格" ) の場合、次の行が続き、隣のセルに次のような出力が得られます。 合格 .

この条件が偽の場合、そのセルには何も含まれていないことを意味します。 "合格" の下の行は ELSE が実行され、隣接するセルの出力値が ブランク .

このループは各セルに対して続けられる。

➤プレス F5

結果 :

そして、その後に "合格" 合格者のステータス

方法-5:完全一致の検索とデータの抽出

という生徒の対応するデータを抽出したい場合。 "マイケル・ジェームズ" という場合は、この方法に従ってください。

Step-01 :

➤フォロー Step-01 方法-1

 Sub Extractdata() Dim lastusedrow As Long Dim i As Integer, icount As Integer lastusedrow = ActiveSheet.Range("B100").End(xlUp).Row For i = 1 To lastusedrow If InStr(1, Range("B" & i), "Michael James")> 0 Then icount = icount + 1 Range("E" & icount & ":G" & icount ) = Range("B" & i & ":D" & i).Value End If Next i End Sub 

ここで、私は B100 として アクティブシートの範囲 (用途に応じて任意の範囲を使用できます)。

InStr(1, Range("B" & i), "Michael James")> 0 は、列のセルが B を含む マイケル・ジェームズ .

範囲("E" & icount & ":G" & icount) は出力データが欲しい範囲、そして Range("B" & i & ":D" & i).value は、カラム B まで D .

➤プレス F5

結果 :

その後、名前を持つ学生について、次のような抽出されたデータが得られます。 マイケル・ジェームズ .

プラクティス部門

自分で練習できるように 実践編 という名前のシートに、以下のようなセクションを作成します。 実践編 .自分でやってください。

結論

この記事では、完全一致を見つけるための最も簡単な方法を取り上げてみました。 ブイビーエー をExcelで効果的に使用することができます。 あなたが有用であることを願っています。 あなたが何か提案や質問がある場合は、私たちとそれらを共有すること自由に感じなさい。

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