【VBA入門】FindNextで「全検索」!一致するデータを一瞬で抽出するループ術

【業務効率化】VBA
スポンサーリンク

「あぁ…また1件ずつ探してコピペか。これ、あと何回やれば終わるんだろう…」

事務仕事中に一度は経験したことはありあませんか?

Excelの標準機能の「検索」はとても便利ですが、VBAで「見つかったもの全てに対して処理をしたい」となった途端、急に難易度が上がったように感じてしまいます。

しかし、FindNextの使い方さえマスターすれば、どれほど膨大なデータでも、条件に一致するセルを「芋づる式」にすべて抽出することができるようになります。

【業務効率化】VBAの記事を見る

なぜFindだけでは不十分なのか?

Findメソッドは、例えるなら「教室のドアを開けて、最初に目に付いたメガネの人を見つける」作業です。
でも、教室には他にもメガネの人がいるかもしれませんよね。

そこで、「じゃあ、次のメガネの人はどこ?」と順番に探してくれるのがFindNextの役割になります。

コピペで使える!全検索のテンプレート

以下のコードは、シートの中から「特定の文字」を探し出し、該当するすべてのセルの色を黄色にする処理のサンプルコードです。

Sub FindAllCells()
    Dim targetRange As Range  ' 検索対象の範囲
    Dim foundCell As Range    ' 見つかったセル
    Dim firstAddress As String ' 最初にみつけたセルの住所を覚える変数
    Dim searchWord As String   ' 探したい言葉

    searchWord = "至急" ' ここに探したい文字を入れます

    ' 1. まずは「最初の1つ」を探す
    With ActiveSheet.UsedRange
        Set foundCell = .Find(What:=searchWord, LookIn:=xlValues, LookAt:=xlPart)

        ' もし1つも見つからなければ、ここで終了
        If Not foundCell Is Nothing Then
           
            ' 2. 最初にみつけた場所をメモしておく
            firstAddress = foundCell.Address

            Do
                ' --- ここに見つかったセルに対する処理を書く ---
                foundCell.Interior.Color = vbYellow ' セルを黄色にする
                ' --------------------------------------------

                ' 3. 「次」のセルを探す
                Set foundCell = .FindNext(foundCell)

            ' 4. 検索結果が空になるか、最初の場所に戻ってくるまで繰り返す
            Loop While Not foundCell Is Nothing And foundCell.Address <> firstAddress
           
        Else
            MsgBox "見つかりませんでした!"
        End If
    End With
   
    MsgBox "すべての検索と処理が完了しました!"
End Sub

覚えておきたい「無限ループ」の防ぎ方

このプログラムで一番大事なのは、firstAddress = foundCell.Addressの部分です。

Excelの検索は、シートの最後まで行くと、再び「最初に見つかった位置」に戻る性質があります。Ctrl+Fの検索も同じですよね。

そのため、最初にみつけた場所を覚えておかないと、プログラムは永遠に同じ場所をぐるぐる探し続けて、Excelがフリーズする原因になってしまいます。

「最初の場所に戻ってきたら検索終了!」というルールをセットで組み込むことが、安全なループ処理を行うコツになります。

まとめ

FindNextを使いこなせれば、事務作業のスピードは劇的に上がります。

「プログラミングって難しそう…」と感じるかもしれませんが、まずはこのテンプレートをコピーして、自分の業務に合わせて「処理(色を塗る、など)」の部分を書き換えるだけで効果を実感できると思います。

小さな効率化の積み重ねが、やがて私たちの自由な時間を生み出します。ぜひ活用してください!

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました