エクセルマクロで、オートフィルタで除外設定をするVBAコードをご紹介します。
除外したい条件を指定して、表示するデータを絞り込みます。
このページのマクロコードは、コピペで使えます。
ぜひ、お試しください。
オートフィルタ「~以外」
以下のマクロを実行すると、オートフィルタで除外データを設定します。
Sub オートフィルタで除外を設定()
ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
Field:=4, _
Criteria1:="<>AB型"
End Sub
マクロ実行前
D列で「AB型以外」のデータを抽出する前の表示です。
マクロ実行後
D列で「AB型以外」のデータを抽出した後の表示です。
[Field:4] にて列指定します。(D列の列番号は ”4” )
[Criteria1:=”< >AB型”] は、不等号を使用して「AB型と等しくない」という設定をしています。
オートフィルタ「~以外」変数使用
以下のマクロを実行すると、オートフィルタで特定文字を除くデータを抽出します。
Sub オートフィルタで除外を設定()
Dim Target As String
Target = "AB型"
ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
Field:=4, _
Criteria1:="<>" & Target
End Sub
マクロ実行後
フィルターの条件に、変数を使用したパターンです。
オートフィルタ「~以外」セル参照
以下のマクロを実行すると、オートフィルタで特定文字を除くデータを抽出します。
Sub オートフィルタで除外をセル参照で指定()
Dim Target As Range
Set Target = Range("G1")
ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
Field:=4, _
Criteria1:="<>" & Target
End Sub
マクロ実行後
フィルターの条件に、セル参照をしているパターンです。
オートフィルタ「~以外」色を判定
以下のマクロを実行すると、オートフィルタで背景色が付いているセルを除外します。
Sub オートフィルタで背景色なしを抽出()
ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
Field:=2, _
Operator:=xlFilterNoFill
End Sub
マクロ実行後
B列で背景色がついているデータ以外を抽出しました。
オートフィルタ「~以外」取消線を判定
以下のマクロを実行すると、オートフィルタで取り消し線がついていないセルを除外します。
Sub 取り消し線がついていないデータのみフィルタ抽出()
Dim LastRow As Long
Dim i As Long
'D列の最終行を取得
LastRow = Cells(Rows.Count, 4).End(xlUp).Row
'D列をループ
For i = 1 To LastRow
'取消線が引いてあるかチェック
If Cells(i, 4).Font.Strikethrough = True Then
'セルの背景色を黄色にする
Cells(i, 4).Interior.Color = 65535
End If
Next i
'黄色セルのみフィルタ抽出 (取り消し線を引いたセル)
Range("A1").AutoFilter Field:=4, Criteria1:=RGB(255, _
255, 0), Operator:=xlFilterCellColor
End Sub
マクロ実行後
D列で取消線がついていないセル以外を抽出しました。
オートフィルタの機能では、取り消し線の有無の判定ができなようなので、
マクロで取り消し線が付いているセルに色をつけてから、色つきのセルをフィルタ抽出しています。
オートフィルタ「~以外」太文字を判定
以下のマクロを実行すると、オートフィルタで太文字になっていないセルを除外します。
Sub 太文字以外を除外してフィルタ抽出()
Dim LastRow As Long
Dim c As Range
'B列の最終行を取得
LastRow = Cells(Rows.Count, 2).End(xlUp).Row
'B列をループ
For Each c In Range("B2:B" & LastRow)
'太文字かチェック
If c.Font.Bold = True Then
'セルの背景色を黄色にする
c.Interior.Color = 65535
End If
Next c
'黄色セルのみフィルタ抽出 (太文字になっているセル)
Range("A1").AutoFilter Field:=2, Criteria1:=RGB(255, _
255, 0), Operator:=xlFilterCellColor
End Sub
マクロ実行後
B列で太文字になっていないセル以外を抽出しました。
オートフィルタの機能では、太文字の有無の判定ができなようなので、
マクロで太文字になっているセルに色をつけてから、色つきのセルをフィルタ抽出しています。
オートフィルタ「~を含まない」
以下のマクロを実行すると、オートフィルタで除外データを設定します。
Sub オートフィルタで除外を設定()
ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
Field:=4, _
Criteria1:="<>*A*"
End Sub
マクロ実行後
D列で「Aを含まない」データを抽出した後の表示です。
[Criteria1:=”< >*A*”] は、「Aを含まない」という設定をしています。
ワイルドカードであるアスタリスク「*」を使っています。
オートフィルタ「複数条件」特定列
以下のマクロを実行すると、オートフィルタで特定列に複数の除外データを設定します。
Sub オートフィルタで除外を設定()
ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
Field:=4, _
Criteria1:="<>AB型", Operator:=xlAnd, Criteria2:="<>B型"
End Sub
マクロ実行後
D列で「AB型以外」と「B型以外」のデータを抽出した後の表示です。
1列に2つ以上の複数条件を設定しています。
オートフィルタ「複数条件」複数列
以下のマクロを実行すると、オートフィルタで複数列に除外データを設定します。
Sub オートフィルタで複数列に除外データを設定()
With ActiveSheet.Range("A1")
.CurrentRegion.AutoFilter Field:=3, Criteria1:="<>女"
.CurrentRegion.AutoFilter Field:=4, Criteria1:="<>O型"
End With
End Sub
マクロ実行後
C列に「女以外」と、D列に「O型以外」の抽出条件を設定しました。
複数列に除外データの条件を設定しています。
この記事がお役に立ちますと幸いです。
・【エクセルマクロ】オートフィルタ処理を自動化する使用例まとめ
「Excel自動化[最強]時短仕事術」
自動化の基礎と時短に役立つテクニック解説書
毎日の定型業務を手際良く行え、大幅な業務効率化を実現!