0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【VBA】Excelでショートカットから複数条件フィルターをかけることができるマクロ

Last updated at Posted at 2022-08-10

複数条件フィルターをかけるマクロを紹介します

Excelの表で例えば「10件くらいのIDだけフィルターかけて表示させたいなぁ・・・」

みたいなケースが結構あると思うんですが、そんなときに便利なマクロを紹介します。

下記で紹介するコードをPersonalの標準モジュールにコピペしてショートカットキーを設定すれば好きな時に使用できます。

image.png

<使い方>
上記のような表でIDの「123,125,129,131,132」をフィルターかけて表示したい場合

①フィルターをかけたい複数条件が記入されているセルを範囲選択
(フィルターをかける列と条件指定用の範囲は同じ列になるようにしてください)
②マクロ実行

でフィルターがかかります。

image.png

image.png

今回は表の下部に条件を記入して範囲選択しましたが、別に同じ列であればどこの範囲を選択してもいいです(表上でも可)

これくらいのデータならあまり恩恵が感じないかもしれないですが、例えば何万行もある表から「この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

かなりざっくり書いてるのでもし試してみたい方で気になるところは直してください。

あとフィルターをかける位置うんぬんとかも変えたい方はコードを調整してください。
(汎用的に使えるように今後修正するかもです)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?