【エクセルマクロ】オートフィルタで最大値・最小値を抽出:5選

エクセルマクロ:オートフィルタで最大値・最小値抽出 アイキャッチ ExcelVBA

エクセルマクロで、オートフィルタで最大値・最小値を抽出するVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
ぜひ、お試しください。

オートフィルタで最大値を抽出

以下のマクロを実行すると、オートフィルタで最大値を抽出します。


Sub オートフィルタで最大値を抽出()
 
  Dim MaxVal As Long
 
  With Application.WorksheetFunction
 
       'セルB2:B10の最大値を求める
       MaxVal = .Max(Range(Cells(2, 2), Cells(10, 2)))
 
  End With
  
  'オートフィルタで最大値を抽出する
  ActiveSheet.Range("A1").AutoFilter Field:=2, Criteria1:=MaxVal

End Sub

 

マクロ実行前

B列を最大値で抽出する前の表示です。


 

マクロ実行後

[Max] 関数でB列から最大値を取得して、変数 [MaxVal] へ値を格納します。

その後オートフィルタで最大値を抽出します。


 
 

オートフィルタで最大値を抽出(配列使用)

以下のマクロを実行すると、配列を使ってオートフィルタで最大値を抽出します。


Sub 配列を使用してオートフィルタで最大値を抽出()

Dim i As Long
Dim MaxNum As Long
Dim MyList As Variant
    
 'データを配列へ格納
 MyList = Range("B1", Range("B" & Rows.Count).End(xlUp)) 

 '初期値を設定
 MaxNum = 0
    
 '配列をループ
 For i = 2 To UBound(MyList)
     If MyList(i, 1) > MaxNum Then
        '最大値を格納
         MaxNum = MyList(i, 1)
     End If
 Next i
    
 'オートフィルタで最大値を抽出する
 ActiveSheet.Range("A1").AutoFilter Field:=2, Criteria1:=MaxNum

End Sub

 

マクロ実行後

配列 [MyList] に、B1:B10の値を格納します。

For文で配列をループして、最大値を探し、変数 [MaxNum] に格納します。

変数 [MaxNum] を使用して、オートフィルタで最大値を抽出します。


 
 

オートフィルタで最大値を抽出(条件設定)

以下のマクロを実行すると、条件設定をして最大値を抽出します。


Sub 条件設定をしてオートフィルタで最大値を抽出()
 
Dim i As Long
Dim MaxNum As Long
Dim Target As String
Dim MyList As Variant
     
 'データを配列へ格納
 MyList = Range("A1", Range("A" & Rows.Count).End(xlUp)).Resize(, 2).Value
 
 '初期値を設定
 MaxNum = 0
 
 '店舗を指定
 Target = "秋田店"
     
 '配列をループ
 For i = 2 To UBound(MyList)
     If MyList(i, 1) = Target Then
        If MyList(i, 2) > MaxNum Then
           '最大値を格納
            MaxNum = MyList(i, 2)
        End If
     End If
 Next i
     
 'オートフィルタで最大値を抽出する
 With ActiveSheet.Range("A1")
     .CurrentRegion.AutoFilter Field:=1, Criteria1:=Target
     .CurrentRegion.AutoFilter Field:=2, Criteria1:=MaxNum
 End With
 
End Sub

 

マクロ実行後

A列が ”秋田店” の最大値を抽出して表示します。


 

オートフィルタで最小値を抽出

以下のマクロを実行すると、オートフィルタで最小値を抽出します。


Sub オートフィルタで最小値を抽出()
 
  Dim MinVal As Long
 
  With Application.WorksheetFunction
 
       'セルB2:B10の最小値を求める
       MinVal = .Min(Range(Cells(2, 2), Cells(10, 2)))
 
  End With
  
    'オートフィルタで最小値を抽出する
    ActiveSheet.Range("A1").AutoFilter Field:=2, Criteria1:=MinVal

End Sub

 

マクロ実行後

[Min] 関数でB列から最小値を取得して、変数 [MinVal] へ値を格納します。

変数 [MinVal] の値を使用して、オートフィルタで最小値を抽出します。


 
 

オートフィルタで最小値を抽出(配列使用)

以下のマクロを実行すると、配列を使ってオートフィルタで最小値を抽出します。


Sub 配列を使用してオートフィルタで最小値を抽出する()

Dim i As Long
Dim MinNum As Long
Dim MyList As Variant
    
 'データを配列へ格納
 MyList = Range("B1", Range("B" & Rows.Count).End(xlUp)) 

 '初期値を設定
 MinNum = 100000
    
 '配列をループ
 For i = 2 To UBound(MyList)
     If MyList(i, 1) < MinNum Then
        '最小値を格納
        MinNum = MyList(i, 1)
     End If
 Next i
    
 'オートフィルタで最小値を抽出する
 ActiveSheet.Range("A1").AutoFilter Field:=2, Criteria1:=MinNum

End Sub

 

マクロ実行後

配列 [MyList] に、B1:B10の値を格納します。

For文で配列をループして、最小値を探し、変数 [MinNum] に格納します。

変数 [MinNum] を使用して、オートフィルタで最小値を抽出します。


 
この記事がお役に立ちますと幸いです。
 

【エクセルマクロ】オートフィルタ処理を自動化:超便利25選
...

 

「Excel自動化[最強]時短仕事術」
自動化の基礎と時短に役立つテクニック解説書
毎日の定型業務を手際良く行え、大幅な業務効率化を実現!