OfficeType

VBA~セルを検索しよう~Excel

VBAでセルを検索したい場合はRange.Findメソッドで検索できます。Range("検索したい範囲の左上のセル:検索したい範囲の右下のセル").Find("検索したい文字列")で検索できます。Range.Addressプロパティ、Range.Columnプロパティ、Range.Rowプロパティと組み合わせてセルのアドレス、列番号、行番号などを取得できます。

下のコードを実行するとセルA1からセルA3の範囲から商品Aを検索し、そのセルのアドレスをメッセージボックスに表示しています。

Sub test1()

Dim a As Range

Set a = Range("B3:C3").Find("商品A")

MsgBox a.Address

End Sub

image-01

image-02

検索を利用して表から目的のデータを取得

表の行見出しと列見出しから目的の項目を検索し、データを取得する方法を解説します。下のコードは変数aに行見出しから木曜日のセルを検索して取得しています。変数bに列見出しから商品Aのセルを検索して取得しています。Cells(行番号,列番号)でデータを取得できるので、行番号に木曜日のセルの行番号つまりa.Rowを指定しています。列番号に商品Aのセルの列番号つまりb.Columnを指定しています。つまりCells(a.Row, b.Column)はCells(7,2)となりセルB7のデータがメッセージボックスに表示されます。

Sub test2()

Dim a As Range
Dim b As Range

Set a = Range("A4:A10").Find("木")
Set b = Range("B3:C3").Find("商品A")

MsgBox Cells(a.Row, b.Column)

End Sub

image-03

image-04