アプリケーションとしてのVBA
オートフィルターを使って複数の条件でデータを抽出する
◆オートフィルターを使って複数の条件でデータを抽出する
オートフィルターを使うと複数の条件でデータを抽出できるようになります。検索よりも
複雑な条件でデータの検索ができるので、使い方によっては便利に使えます。
オートフィルターをかけた後の、データの行番号を取得することで、条件に合うデータを
簡単に操作できるようになります。
オートフィルターで絞り込まれた後、見えているているセルを取得するには、
SpecialCells(xlCellTypeVisible) を使用します。
Field で指定する番号は列番号です。
オートフィルターでの検索は、文字による検索です。
セルA20が日付データだとすると
Criteria1:=Format(Range("A20"), "yyyy/mm/dd")
こんなふうに文字に変換して設定にする必要があります。
example34 をダウンロードして、動作を確認してください。
Sub Sample()
Dim DB As Worksheet
Dim FilterRow As Range
Set DB = Worksheets("生産実績")
If DB.AutoFilterMode Then
DB.AutoFilterMode = False
End If
DB.Range("A1").AutoFilter Field:=2, Criteria1:="=未来が見えるメガネ"
DB.Range("A1").AutoFilter Field:=9, Criteria1:=">2004/1/1", _
Operator:=xlAnd, Criteria2:="<2004/1/31"
MsgBox DB.AutoFilter.Range.Columns(1). _
SpecialCells(xlCellTypeVisible).Count
For Each FilterRow In _
DB.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible)
If FilterRow.Row <> 1 Then
MsgBox FilterRow.Row
End If
Next FilterRow
End Sub