Excel

【Excel VBA入門】Findメソッドの使い方をやさしく解説|セル検索の基本から応用まで

VBAでセルを検索したいときに便利なのが、Findメソッドです。
大量のデータから特定の文字列や数値を見つけ出し、処理を加えることができます。

この記事では、**Findメソッドの基本構文、よく使うパラメータ、繰り返し検索(FindNext)**などをわかりやすく紹介します。


1. Findメソッドとは?

Excel VBAのFindメソッドは、指定した範囲から条件に一致するセルを検索する機能です。

🔍 フィルターやVLOOKUPよりも柔軟で、検索後のセルに直接アクセス・操作が可能です。


2. 基本構文と引数の説明

Range.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

よく使う引数だけを説明すると:

引数 内容例 説明
What “検索する値” 検索したい文字列または数値
After 検索開始位置(省略可) 通常は省略でOK
LookIn xlValues, xlFormulas 値か数式か
LookAt xlWhole, xlPart 完全一致 or 部分一致
SearchOrder xlByRows, xlByColumns 行方向 or 列方向
MatchCase True / False 大文字・小文字を区別するか

3. シンプルな使用例

Sub FindExample()
Dim rng As Range
Set rng = Range(“A1:A10″).Find(What:=”りんご”)

If Not rng Is Nothing Then
MsgBox “見つかったセルのアドレス: ” & rng.Address
Else
MsgBox “見つかりませんでした。”
End If
End Sub

解説:

  • 範囲A1:A10から「りんご」を検索

  • 見つかればそのセルのアドレスを表示

  • なければ「見つからなかった」と表示


4. 見つかったセルに対する処理例

Sub ReplaceValue()
Dim c As Range
Set c = Range(“B1:B20”).Find(“バナナ”)

If Not c Is Nothing Then
c.Value = “アップル” ‘ 値を変更
End If
End Sub

 

5. 複数該当セルをすべて検索する方法(FindNext)

Sub FindAllExample()
Dim firstAddress As String
Dim c As Range
Dim ws As Worksheet
Set ws = ActiveSheet

With ws.Range(“A1:A100”)
Set c = .Find(“東京”, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Debug.Print c.Address, c.Value
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
End Sub

 FindNextで検索をループさせるのがポイント!


6. よくあるエラー・注意点

ミス例・症状 原因 解決方法
Object variable or With block variable not set 検索結果がNothingなのに使用した If Not r Is Nothing Then で判定を入れる
FindNextが無限ループする firstAddressを比較していない 最初のセルのアドレスを覚えておく
大文字・小文字が一致しない MatchCase:=Trueを忘れている 明示的に区別させる
数値が見つからない LookIn:=xlValuesにすべき LookInの指定を明確に

7. まとめ

機能 内容
基本構文 Range.Find(What:=検索値, ...)
単一検索 見つかったセルのAddressValueが使える
全件検索 FindFindNextDo Whileでループ
注意点 Nothingチェックと firstAddressの比較が重要
主な用途 キーワード検索、値の置換、条件一致セルの取得など

✅ 実務での活用例

  • 商品名「リンゴ」の在庫セルを探して数量を変更

  • 「未処理」と書かれたセルをすべてハイライト

  • 指定の社員IDを見つけて、行全体を抽出表示


FindメソッドはVBAの検索処理で非常に重要な基本技術です。
応用すれば、複数条件検索、動的範囲指定、自動化にも活用できます。