エクセルマクロで、オートフィルタで最大値・最小値を抽出する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] を使用して、オートフィルタで最小値を抽出します。
この記事がお役に立ちますと幸いです。
・【エクセルマクロ】オートフィルタ処理を自動化する使用例まとめ
「Excel自動化[最強]時短仕事術」
自動化の基礎と時短に役立つテクニック解説書
毎日の定型業務を手際良く行え、大幅な業務効率化を実現!