VBA(Excel)でオートフィルター関連についてのメモ
開発環境は、Windows 10 Pro(64bit)。
AutoFilterで指定する際に、Range("A1")で指定した場合、1行目を横に進んで空白の直前までがフィルターとして適用される。その場合、Range("A1:K1")のように指定すると、途中で空白があっても、A~K列までフィルターが適用される。
オートフィルターを設定する
'表全体を選択する ActiveSheet.Range("A1").CurrentRegion.Select 'オートフィルターを設定する Selection.AutoFilter
オートフィルターをクリアする(消去する)
ActiveSheet.Range("A1").AutoFilter
オートフィルターの絞り込みの条件を解除する
If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData End If
1つの列に複数の条件を指定する
条件を配列に入れて、Criteria1に指定する。
Dim ListArray(3) As String ListArray(0) = "リンゴ" ListArray(1) = "バナナ" ListArray(2) = "ミカン" ListArray(3) = "イチゴ" ActiveSheet.Range("A1").AutoFilter Field:=9, Criteria1:=ListArray, Operator:=xlFilterValues
指定した条件を除外したい場合(単一、複数両方とも)
※除外するものは最大2つまでが限界。そこで、除外したいものが3つ以上ある場合、全体からその除外したいものを引いたものを配列に入れて、それを、Criteria1に渡せばよい。
'aaaを除外 ActiveSheet.Range("A1").AutoFilter Field:=9, Criteria1 := "<>aaa", Operator:=xlFilterValues 'aaaとbbbを除外 ActiveSheet.Range("A1").AutoFilter Field:=9, Criteria1 := "<>aaa", Operator := xlAnd, Criteria2 := "<>bbb", Operator:=xlFilterValues