あなたが探しているデータを一瞬で見つける!VBAの「Find」魔法

スポンサーリンク
スポンサーリンク

はじめに

 「たくさんのデータの中から、特定の名前や日付をひとつずつ目で探す……」 そんな、気が遠くなるような作業に、あなたも疲れていませんか?

 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の便利さがより深く理解できます。

コメント

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