NO.53 入力されているデータの抽出(フィルタ機能)

一覧表から条件によってデータを抽出するフィルタ機能が標準で備わっている。 操作方法はNO.03 フィルタ機能を使ってデータ抽出にて説明しているが、ExcelVBAでフィルタ機能を使用する方法を説明します。

作成するVBA

以下に作成するVBA例を示します。 なお、このモジュールは標準モジュール(Module1)に作成してください。

作成するモジュール

'***** フィルタ機能によるデータ抽出 *****
Public Sub SelectData()
Dim fData As Range
Dim fCriteria As Range
    Sheets("Sheet2").Select
    Set fData = Range(Cells(1, 1), Cells(12, 4)) '元データ
    Sheets("Sheet1").Select
    Set fCriteria = Range(Cells(1, 1), Cells(2, 1)) '抽出条件
    Sheets("Sheet3").Select
    Cells.Clear 'データのコピー先は必ずクリアする
    fData.AdvancedFilter _
        Action:=xlFilterCopy, _
        CriteriaRange:=fCriteria, _
        CopyToRange:=Range("A1"), _
        Unique:=False
    Set fData = Nothing
    Set fCriteria = Nothing
End Sub

まとめ

元データのセル範囲はRange("A1").End(xlToRight).ColumnRange("A1").End(xlDown).Rowで求めると良い。 また、フィルタ機能を実行する前にコピー先のシートをクリアしておかないと正しく動作しません。

関連ページへのリンク

作成日:2007/11/30

| HOME | INDEX | | |