大量のデータから必要なものを抽出するにはAutoFilterを用います。
AutoFilterの使い方
データの抽出はExcelの作業の中でも頻度の高い作業です。AutoFilterの構文は下記のとおりです。
1 |
Object .AutoFilter ([Field:],[Criteria1:],[Operator:],[Criteria2:],[VisibleDropDown:]) |
- Object:Rangeオブジェクトを指定します。
- Field:左から何番目の列で実行するか、数値で示します。省略可能で、省略した場合、1番左の列(デフォルトのA列)で実行されます。
- Criteria1:抽出条件を指定します。以下に記入例を示します。
記入例 | 解説 |
"*ABC" | ABCを含む |
"<>ABC" | ABC以外 |
"<>*ABC" | ABCを含まない |
"=10" | 10 |
">10" | 10より大きい |
"<=10" | 10以下 |
"<>10" | 10以外 |
"" | 空白セル |
"<>" | 空白セル以外 |
- Operator:省略可能で、省略した場合、XlAnd(Crieria1とCriteria2の積集合)となります。主なものを以下に紹介します。
xlAnd | Criteria1かつCriteria2 |
xlOr | Criteria1またはCriteria2 |
xlTop10Items | 上から10番目まで |
xlBottom10Items | 下から10番目まで |
xlTop10Percent | 上位10% |
xlBottom10Percent | 下位10% |
- Criteria2:Criteria1に加えて条件がある場合、記入します。
- VisibleDropDown:TrueまたはFalseを記入します。Trueはフィルタの矢印を表示、Falseは非表示にします。省略した場合はTrueとなります。
使用例
色々な抽出例を紹介します。
1 2 3 4 5 |
'B列の中から値100以上のデータを抽出 Sub AutoFilter_test1() Range("A1").AutoFilter Field:=2, Criteria1:=">100" End Sub |
1 2 3 4 5 |
'C列から80以上120以下のデータを抽出 Sub AutoFilter_test2() Range("A1").AutoFilter Field:=3, Criteria1:="=<120", _ Operator:=xlAnd, Criteria2:=">=80" End Sub |
1 2 3 4 5 6 7 |
'F列中から上位10個のデータを抽出して、別のシートにコピーする Sub AutoFilter() With Sheets("Sheet1").Range("A1") .AutoFilter Field:=6, Operator:=xlTop10Items .CurrentRegion.Copy Sheets("Sheet2").Range("A1") End With End Sub |