Excel Microsoft VBA

同じキーワードを続けて検索する方法【VBA入門講座#25】

サブロー
こんにちは。サブローです。

『Microsoft Excel』(以下Excel、エクセル)の中の機能としてある[VBA] について基本的な説明をしていきます。

仕事の改善や個人的な知識向上に役立ててください(^o^)

第25回目の今回は

VBAを使って、同じ条件(キーワード)で続けて検索する方法

について解説していきますので、よろしくお願いします。

これまでのVBAに関する記事は、下記のINDEXを参照してくださいね。

↓サブログ内部リンク(VBA用INDEX)↓

Excel VBA講座-目次(INDEX)

サブローExcel VBAに関する説明を今後増やして行く予定なので、各リンクに飛ぶような目次(INDEX)を作りました。 随時更新していくので、よろしくお願いします。 スラスラ読めるExcel VBA ...

続きを見る

『FindNext』メソッドについて

Findメソッドによる検索方法では検索範囲内で一番最初(先頭)にヒットしたデータしか抽出できませんが、FindNextメソッドは、続きの検索を行うことができ、該当するデータを全て検索し続けることができます!!

構文

Range.FindNext(After)

After:指定したセルの下方 (行のときは右、列のときは下) のセルから検索を開始。引数"After"には、対象セル範囲内の単一セルを指定する必要がある。検索は指定したセルの次のセルから始まるので、指定したセル自体は、範囲全体が一度検索されるまで検索されない。この引数を省略すると、セル範囲の左上隅のセルが指定されたものと見なされる。

サンプルコード

下図のようにチーム名とその横の列にランク(まぁ強さとしましょう!)がある表があります。

F3セル(下図では"S")のランクのものを『検索結果』としてF5セルから下に結果を抽出されるコードで説明しますね。

---------------------------------------------------------------------------

Sub 連続検索()

Dim 検索範囲 As Range

'『検索範囲』をRange型の変数に設定する。

Dim 検索セル As Range

'『検索セル』をRange型の変数に設定する。

Dim 検索起点行 As Long

'『検索起点行』をLong型の変数に設定する。

Dim 結果行 As Long

'『結果行』をLong型の変数に設定する。

結果行 = Range("F5").Row

'『結果行』に結果を抽出する列番号を代入する。

Range("F5", Range("F5").End(xlDown)).Clear

'以前に抽出した結果があることを想定し、一旦データをクリアする。(F5セル~入力データの最終行まで)

Set 検索範囲 = Range("B3").CurrentRegion.Columns(2)

'『検索範囲』をB3セルを起点として2列目(C列)のアクティブな領域に設定する。

Set 検索セル = 検索範囲.Find(What:=Range("F3").Value, LookAt:=xlWhole)

'『検索セル』を検索範囲から"F3"セル(例では"S")と完全一致で検索し、ヒットしたセルを代入する。

If 検索セル Is Nothing Then

'もし『検索セル』がなかった場合は

MsgBox "該当ランクチームはありません"

'該当ランクチームはありません とメッセージが出る。

Else

'『検索セル』があった場合は

検索起点行 = 検索セル.Row

'『検索基点行』に『検索セル』の行番号を代入する。

Do

'以下の処理を繰り返す。

Cells(結果行, 6).Value = 検索セル.Offset(0, -1).Value

'『F列の結果行』に『検索セル』の1列隣のセルの値を代入する。

Cells(結果行, 6).Borders.LineStyle = xlContinuous

'『F列の結果行』に四角の罫線を引く

結果行 = 結果行 + 1

'『結果行』を1つ増やす。

Set 検索セル = 検索範囲.FindNext(検索セル)

'『検索範囲』での検索を『検索セル』の次から検索を実行し、見つかったセルを変数『検索セル』に代入する。

Loop While 検索セル.Row <> 検索起点行

'『検索セル』の行番号が変数『検索基点行』に一致しない間は、処理を繰り返す。(検索は一巡したら『検索基点』のセルに戻る)

End If

'『If』ステートメントを終了する。

Set 検索範囲 = Nothing

'『検索範囲』の変数情報を解法する。

Set 検索セル = Nothing

'『検索セル』の変数情報を解法する。

End Sub

'終了!!

---------------------------------------------------------------------------

上記のプログラムを実行すると・・・・・

F5セルから下方向に検索してヒットするチーム名が羅列されます。

モグゾー
それでは、今回はここまで。最後までお読みいただきありがとうございました!
下のVBA講座も是非ご覧下さい!!

2020年12月12日公開 | 2020年12月19日更新

~INDEX一覧~

エクセル関数の勉強 1

サブローエクセル/Excel関数の一覧にしています。本ブログ内で記事にしているものは、講座の列にリンク付けを随時行います(^o^) ※使用頻度のランクに関しては、個人的な主観でランク付けをしています。 ...

2

サブロー危険物取扱者試験 乙4種対策講座の目次(INDEX)を作りました。 随時更新していくので、よろしくお願いします。 【目次/INDEX】 講座ID分類内容リンク まとめ1法令#0『試験に出るポイ ...

3

サブローQC(品質管理)検定に関する説明が増やして行く予定なのでリンクに飛ぶような目次(INDEX)を作りました。 随時更新していくので、よろしくお願いします。 モグゾー対象級を記載していますが、あく ...

4

サブローExcel VBAに関する説明を今後増やして行く予定なので、各リンクに飛ぶような目次(INDEX)を作りました。 随時更新していくので、よろしくお願いします。 スラスラ読めるExcel VBA ...

-Excel, Microsoft, VBA
-,

Copyright© サブログ , 2021 All Rights Reserved Powered by AFFINGER5.