ExcelVBA シート内で特定の文字列や値を検索|セルの位置を取得する方法

 

ExcelVBA  シート内で特定の文字列や値を検索し、そのセルの位置を取得したり、検索結果を活用して処理を自動化できます。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA  文字列を検索してセルの位置を取得する|シーン

以下のシーンで利用します。

1.指定した値を含むセルの位置を調べる。

2.検索したセルに対して書式設定や値の変更を行う。

3.一覧表から特定のキーワードを含む行を抽出する。

4.複数のシートやブックにまたがる検索を自動化する。

 

Excel VBA   文字列を検索してセルの位置を取得する|基本構文

セルを検索するには Range.Find メソッドを使用します。

基本構文

Dim foundCell As Range
Set foundCell = Range("A1:D10").Find(What:="検索する文字列", LookAt:=xlPart)

If Not foundCell Is Nothing Then
MsgBox "見つかったセルのアドレス: " & foundCell.Address
Else
MsgBox "検索した値は見つかりませんでした。"
End If

```
・What:="検索する文字列" → 検索する文字列や値
・LookAt:=xlPart → 部分一致(完全一致の場合は xlWhole を指定)

 

Excel VBA   文字列を検索してセルの位置を取得する|サンプルコード

検索結果をループしてすべての一致を取得

Option Explicit

Sub SearchAll()
    Dim ws As Worksheet
    Dim searchRange As Range
    Dim foundCell As Range
    Dim firstAddress As String
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Set searchRange = ws.Range("A:A") ' A列全体を検索対象にする
    
    Set foundCell = searchRange.Find(What:="検索する文字列", LookAt:=xlPart)
    
    If Not foundCell Is Nothing Then
        firstAddress = foundCell.Address ' 最初の一致セルを記録
        Do
            foundCell.Interior.Color = RGB(255, 255, 0) ' 見つかったセルを黄色にする
            Set foundCell = searchRange.FindNext(foundCell) ' 次の一致セルを検索
        Loop While Not foundCell Is Nothing And foundCell.Address <> firstAddress
    Else
        MsgBox "検索した値は見つかりませんでした。"
    End If
End Sub

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

FindNext を使用して検索結果を順番に取得

Do While ループで最初の検索結果に戻るまで繰り返す。

Interior.Color を変更して検索結果を強調表示

注意点

・ Find を使うと検索結果が Nothing の場合があるので If Not foundCell Is Nothing Then のチェックが必要

・ Find は 最後の検索条件を記憶しているため、意図しない動作を防ぐには Find の各引数を明示的に指定する。

・ FindNext を使用する場合、無限ループにならないよう firstAddress を記録してループを管理

Excel VBA   文字列を検索してセルの位置を取得する|まとめ

Find で 単一セル を検索、FindNext で複数一致を取得

LookAt:=xlWhole で 完全一致、LookAt:=xlPart で 部分一致

検索結果のセルを活用して、色を付けたり、データを処理できる。

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問