Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » Excel VBAで最大値・最小値を求める

Excel VBAで最大値・最小値を求める

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「excel2013 vba 最大値・最小値」
「excel vba 最大値を求める office2013」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。

Excel VBA(Visual Basic for Applications)で、たくさんの数値の中から、最大値や最小値を取得するにはどうすればいいのかを探している方による検索です。

WorksheetFunction.Maxで最大値をWorksheetFunction.Minで最小値を取得できる

WorksheetFunctionオブジェクトを使って、表計算ソフトExcelの持つワークシート関数を利用すれば、Excel VBAからも簡単なコードで最大値や最小値を取得できます。

WorksheetFunctionオブジェクトのMaxメソッドを使えば、

Excel VBAで最大値・最小値を求める

最大値を求められ、WorksheetFunction.Minメソッドで、

Excel VBAで最大値・最小値を求める

最小値を求められます。

[スポンサードリンク]

最大値・最小値を求めるサンプルマクロ

以下のマクロを実行すると、WorksheetFunction.Maxの引数に指定された数値の最大値「30」がメッセージボックスに表示されます。

Sub 最大値を求める()

 MsgBox WorksheetFunction.Max(20, 30, 10)

End Sub

以下のマクロを実行すると、WorksheetFunction.Minの引数に指定された数値の最大値「10」がメッセージボックスに表示されます。

Sub 最小値を求める()

 MsgBox WorksheetFunction.Min(20, 30, 10)

End Sub

セル範囲から最大値を求めるサンプルマクロ

セル範囲から最大値・最小値を求めることもできます。

以下のマクロを実行すると、A1:A3セルに入力されている数値の最大値がメッセージボックスに表示されます。

Sub 最大値を求める_セル範囲()

 Dim rng As Range

 Set rng = Range("A1", "A3")
 MsgBox WorksheetFunction.Max(rng)

End Sub

MsgBox関数の引数に指定されたオブジェクト式「WorksheetFunction.Max(rng)」を、「WorksheetFunction.Min(rng)」にすれば、最小値が表示されます。

セル範囲を表すRangeオブジェクトを取得する、
  Set rng = Range("A1", "A3")
の右辺は、さまざまな書き方をしてOKです。

Rangeプロパティの引数にCellsプロパティを組み合わせもいいですし、RowsプロパティやEntireRowプロパティも、ColumnsプロパティやEntireColumnプロパティも組み合わせられます。

配列変数から最大値を求めるサンプルマクロ

配列変数から最大値・最小値を求めることもできます。

Sub 最大値を求める_1次元配列()

 Dim arr As Variant

 arr = Array(20, 30, 10)
 MsgBox WorksheetFunction.Max(arr)

End Sub

2次元配列でもOKです。

Sub 最大値を求める_2次元配列()

 Dim arr As Variant

 arr = Range("A1", "C2")
 MsgBox WorksheetFunction.Max(arr)

End Sub

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » Excel VBAで最大値・最小値を求める

「WorksheetFunction」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.