【VBA】複数の条件を満たすデータの最大値を取得する【MAXIFS関数】

VBAで
 ・複数の条件を満たすデータの最大値を取得
できます!

VBAから
 ・ワークシート関数「MAXIFS関数」
を使用することで実現できます!

PR

VBAコード

ここでは例として、
 ・シート「sample」のB列「支店名」が「北海道」、かつC列「名前」が「田中」
 ・D列「売上」の最大値を取得
します。
※上記の条件を満たす最大値1800です。

上記の条件を満たす最大値は1800です。
上記の条件を満たす最大値1800です。
Option Explicit

Sub sample()

    Dim ws As Worksheet
    Dim startRange As Range
    Dim endRow As Double
    Dim endRange As Range
    Dim branchRange As Range
    Dim nameRange As Range
    Dim salesRange As Range
    Dim resultMax As Double

    '対象シートを取得
    Set ws = Worksheets("sample")
    
    '------------------------------------
    '「支店名」列の対象範囲を取得
    '------------------------------------
    '開始セルを取得
    Set startRange = ws.Range("B3")
    '最終行を取得
    endRow = startRange.End(xlDown).Row
    '最終セルを取得
    Set endRange = ws.Cells(endRow, startRange.Column)
    '対象範囲を取得
    Set branchRange = ws.Range(startRange, endRange)
    
    '------------------------------------
    '「名前」列の対象範囲を取得
    '------------------------------------
    '開始セルを取得
    Set startRange = ws.Range("C3")
    '最終行を取得
    endRow = startRange.End(xlDown).Row
    '最終セルを取得
    Set endRange = ws.Cells(endRow, startRange.Column)
    '対象範囲を取得
    Set nameRange = ws.Range(startRange, endRange)
    
    '------------------------------------
    '「売上」列の対象範囲を取得
    '------------------------------------
    '開始セルを取得
    Set startRange = ws.Range("D3")
    '最終行を取得
    endRow = startRange.End(xlDown).Row
    '最終セルを取得
    Set endRange = ws.Cells(endRow, startRange.Column)
    '対象範囲を取得
    Set salesRange = ws.Range(startRange, endRange)
    
    '------------------------------------
    '複数の条件を満たすデータの最小値を取得
    '------------------------------------
    resultMax = WorksheetFunction.MaxIfs(salesRange, branchRange, "北海道", nameRange, "田中")
    
    MsgBox ("条件を満たすデータの最小値:" & resultMax)

End Sub

「支店名」列の対象範囲を取得します(21~27行目)。
「名前」列の対象範囲を取得します(33~39行目)。
「売上」列の対象範囲を取得します(45~51行目)。

「WorksheetFunctionオブジェクト」の「MaxIfs」メソッドにより、「複数の条件を満たすデータの最大値」を取得します(56行目)。
※ワークシート関数「MAXIFS関数」です。
※上記では使用していませんが、条件の指定には「ワイルドカード」も使用できます。
※上記では条件を2つ指定していますが、3つ以上も指定できます。

PR

実行結果

複数の条件を満たすデータの最大値を取得できました。
※上記に記載した通り、条件を満たす最大値1800です。

実行結果
実行結果
PR

参考①

複数の条件を満たすデータの最小値を取得することもできます。

詳細は以下の記事をご確認ください。

PR

参考②

上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。

●MAXIFS関数

タイトルとURLをコピーしました