複数条件フィルターをかけるマクロを紹介します
Excelの表で例えば「10件くらいのIDだけフィルターかけて表示させたいなぁ・・・」
みたいなケースが結構あると思うんですが、そんなときに便利なマクロを紹介します。
下記で紹介するコードをPersonalの標準モジュールにコピペしてショートカットキーを設定すれば好きな時に使用できます。
<使い方>
上記のような表でIDの「123,125,129,131,132」をフィルターかけて表示したい場合
①フィルターをかけたい複数条件が記入されているセルを範囲選択
(フィルターをかける列と条件指定用の範囲は同じ列になるようにしてください)
②マクロ実行
でフィルターがかかります。
今回は表の下部に条件を記入して範囲選択しましたが、別に同じ列であればどこの範囲を選択してもいいです(表上でも可)
これくらいのデータならあまり恩恵が感じないかもしれないですが、例えば何万行もある表から「この20件のIDのデータ調べて」
みたいに言われたときに効果を発揮します。
フィルターをかけたい列の下に条件をパパっと入れてマクロ実行で瞬殺です。
Personalコピー用
開発タブ → マクロの記録
→ マクロ名:OrFilter、ショートカットキー:任意、保存先:個人用マクロブック → OK → 記録終了
Alt + F11でVBEを開いて左のプロジェクトから
VBAProject(PERSONAL.XLSB)
の標準モジュール「Module1」の中身に下記のコードをペースト
Sub OrFilter()
Dim startRow, startCol, endRow, endCol, i, num As Integer
Dim LoopArea As Range
Dim SelectArea As String
Dim filterAry() As String
Set LoopArea = Selection
startRow = LoopArea.Cells(1).Row
startCol = LoopArea.Cells(1).Column
endRow = LoopArea.Cells(LoopArea.Count).Row
endCol = LoopArea.Cells(LoopArea.Count).Column
If startCol <> endCol Then
MsgBox "複数列で範囲選択されている場合は実行できません"
Exit Sub
End If
num = endRow - startRow
ReDim filterAry(num)
For i = 0 To num
filterAry(i) = Cells(startRow, startCol)
startRow = startRow + 1
Next
Range("A1").AutoFilter startCol, filterAry, xlFilterValues
End Sub
かなりざっくり書いてるのでもし試してみたい方で気になるところは直してください。
あとフィルターをかける位置うんぬんとかも変えたい方はコードを調整してください。
(汎用的に使えるように今後修正するかもです)