はじめに
「たくさんのデータの中から、特定の名前や日付をひとつずつ目で探す……」 そんな、気が遠くなるような作業に、あなたも疲れていませんか?
Excelの「Ctrl + F(検索)」を、マクロで自動化したものが**Find(ファインド)**です。これを使えば、数千行あるデータの中からでも、あなたが欲しい情報を一瞬で見つけ出し、その場所を特定することができます。
1. Findってなに?
一言でいうと、「巨大なデータの海から、特定の『宝物(データ)』がある場所を指し示してくれるコンパス」です。
VLookup関数のマクロ版のようなものですが、Findのすごいところは、「見つけた場所(セル)」そのものを教えてくれる点です。場所がわかれば、そのセルの色を変えたり、隣のセルを書き換えたりと、自由自在に操作できます。
2. あなたが使うための「魔法の書き方」
基本的な書き方はこうなります。
Set セルの場所 = 探したい範囲.Find( What:=”探す言葉” )
【例題】出席簿から「佐藤さん」を探してみよう
例えば、A列に名前が並んでいる表から「佐藤」さんを探すコードです。
VBA
Sub 名前を探す()
Dim 見つけたセル As Range
' A列の中から「佐藤」さんを探して!と命令します
Set 見つけたセル = Range("A:A").Find(What:="佐藤")
' もし見つかったら、その場所の背景を黄色にします
If Not 見つけたセル Is Nothing Then
見つけたセル.Interior.Color = vbYellow
MsgBox "佐藤さんは " & 見つけたセル.Address & " にいました!"
Else
' もし見つからなかった場合
MsgBox "佐藤さんは見つかりませんでした。"
End If
End Sub
3. ここがポイント!「Nothing」の合言葉
Findを使うときに、あなたが一番気をつけるべきことがあります。それは「見つからなかった時の対策」です。
探している言葉が見つからないと、VBAは「Nothing(なにもないよ!)」という状態になります。これを確認せずに次の操作をしようとすると、マクロがエラーで止まってしまいます。 例題の If Not 見つけたセル Is Nothing Then という1行は、「もし、なにもない(Nothing)状態じゃないなら(=見つかったなら)」という大切なチェックなんです。
4. 使うための準備
- 必要なExcelバージョン: すべてのバージョンで使えます。昔も今も変わらない、VBAの王道テクニックです。
- 前提として習得しておく関数:
- VLOOKUP関数: 「あるデータを探して、その情報を取ってくる」というイメージがわかっていると、Findの便利さがより深く理解できます。


コメント