Excel VBAでデータの検索(抽出)をする方法|AutoFilterを使用

Excelで条件に合ったデータを抽出するにはAutoFilterメソッドを使います。




Homeに戻る > Excel セルのTipsへ

AutoFilter メソッドの構文 : expression.AutoFilter(Field, Criteria1, Operator,Criteria2)

  • expression : 必ず指定します。フィルタを行う範囲内の 1 つのセルを指定します
  • Field : 必ず指定します。対象となるフィールド番号を整数で指定します。最も左の列がフィールド番号 1 になります。
  • Criteria1 : 省略可能です。条件となる文字列か条件式を指定します。
  • Operator : 省略可能です。抽出方法を指定します。引数を省略するとデータのすべてを表示します。
    xlAnd Criteria1 の条件と Criteria2 の条件を満たすデータを抽出します。
    xlOr Criteria1 の条件か Criteria2 のいずれかの条件を満たすデータを抽出します。
  • Criteria2 : 省略可能です。2 番目の抽出条件となる文字列を指定します。

下記のExcelコードの流れ。

  1. 前回の抽出結果が残っているといけないので、抽出結果の表示領域をクリアします。
  2. 抽出する名前をカタカナで入力してもらいます。
  3. 入力するカタカナ名が含まれるデータを抽出します。
  4. 抽出結果を結果表示位置にコピーします。
  5. 抽出結果を解除します。
  6. 結果表示位置のデータ数を調べ、メッセージ表示します。

検索に関連するTipsの「基本的な検索方法」も参照してください。


データの検索(抽出)をするVBA

Excelシートコード

Private Sub ExFind()
    Dim s As String
    Dim coun As Long
    
    '検索結果コピー領域のクリア
    Range("A20").CurrentRegion.ClearContents
    
    Sheets("Sheet2").Select
    ActiveSheet.Range("A1").Activate
    
    s = Application.InputBox("カタカナで氏名を入力して下さい")
    If s = "" Or s = "False" Then
        Sheets("Sheet1").Select
        Exit Sub
    End If
    
    '抽出
    ActiveSheet.Range("A1").AutoFilter field:=3, Criteria1:="=*" & s & "*", Operator:=xlAnd
    '結果をコピー
    ActiveSheet.Range("A1").CurrentRegion.Copy Range("A20")
    '解除
    ActiveSheet.Range("A1").AutoFilter

    '結果表示
    Sheets("Sheet1").Select
    If Range("A21") = "" Then
        Range("B8") = "見つかりませんでした。"
    Else
        coun = Range("A20").End(xlDown).Row - 20
        Range("B8") = coun & " 件見つかりました。"
    End If
End Sub


Private Sub CommandButton1_Click()
    ExFind
End Sub



実行前のシート

検索を開始するコマンドボタンを配置したシートです。

実行前

コマンドボタンをクリックするとダイアログボックスが開きます。

検索するナマエを入力します。

検索ダイアログ

検索し見つかった場合の実行結果

見つかったデータ数がB8セルに表示されています。

もし見つからなければ「見つかりませんでした。」と表示されます。

検索結果

Homeに戻る > Excel セルのTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved