【マクロVBA】データの最大値・最小値をMAX・MINを使用して求める!複数範囲にも対応

計算・関数

エクセルの関数には最大値・最小値をMAX・MIN関数が存在します。
この関数はマクロVBAでも使用することができます。

使用方法は関数の仕組みと同じです。
関数は下記リンクを参照してください。

【MAX関数】エクセルで範囲を指定して、数値の最大値を求める方法について ► 独学エクセル塾 (dokugakuexcel.com)

【MIN関数】エクセルで関数を使用して、最小値を求める方法について ► 独学エクセル塾 (dokugakuexcel.com)

分析などにはよく使用される関数ですよね。
是非参考にしてみてください。

それでは見ていきましょう。




■MAX関数で指定範囲の最大値を求める

・プログラムの仕組み

Cells(3, 5) = Application.WorksheetFunction.Max(最大値を求める範囲 )

・使用方法


では下図の例をもとに進めていきましょう

AさんからKさんまでの得点をC列に入力しており
今回はその最大値の最高得点を「E3」に入力してみましょう。

ではプログラムを組んでみましょう。
平均を求めたい範囲は「C3からC13」ですので下記のようになります。

Sub 最大値()

Cells(3, 5) = Application.WorksheetFunction.Max(Range(“C3:C13”))

End Sub

それでは実行した結果を見てみましょう。

最大値を求めることができました。
この中で一番大きな数値は「98」なので「98」が出力されました。
ちなみにCellsで表示するとこのようになります。

Cells(3, 5) = Application.WorksheetFunction.Max(Range(Cells(3, 3), Cells(13, 3)))

さらにRange変数を使用しても平均を求めることは可能です。

Sub 最大値()

Dim A As Range

Set A = Range(“C3:C13”)

Cells(3, 5) = Application.WorksheetFunction.Max(A)

End Sub

様々な場面に合わせて使用してみてください。

■MIN関数で指定範囲の最小値を求める

・プログラムの仕組み

Cells(3, 5) = Application.WorksheetFunction.MIN(最小値を求める範囲 )

・使用方法

では下図の例をもとに進めていきましょう

さきほど使用していたシートを元に進めていきましょう。
AさんからKさんまでの得点をC列に入力しており
今回はその最小値の最低得点を「E3」に入力してみましょう。

ではプログラムを組んでみましょう。
平均を求めたい範囲は「C3からC13」ですので下記のようになります。

Sub 最小値()

Cells(3, 5) = Application.WorksheetFunction.Min(Range(“C3:C13”))

End Sub

それでは実行した結果を見てみましょう。

最小値を求めることができました。
この中で一番大きな数値は「10」なので「10」が出力されました。
ちなみにCellsで表示するとこのようになります。

Cells(3, 5) = Application.WorksheetFunction.Min(Range(Cells(3, 3), Cells(13, 3)))

さらにRange変数を使用しても平均を求めることは可能です。

Sub 最小値()

Dim A As Range

Set A = Range(“C3:C13”)

Cells(3, 5) = Application.WorksheetFunction.Min(A)

End Sub

様々な場面に合わせて使用してみてください。

■よくあるエラーと対処法

・WorksheetFunctionクラスのMaxプロパティを取得できません・WorksheetFunctionクラスのMinプロパティを取得できません

こちらは対象の範囲にエラーが生じているかもしれません。
下図の見本を見てみましょう。

得点にエラーが存在しています。
先ほどの最小値を求めるプログラムを実行するとエラーになってます。

こちらの解決方法は参照範囲のエラーをなくすしかありません。
IFERROR関数などを使用してエラーにならない出力を検討してみましょう。

・最大値・最小値の結果が正しくない

こちらはセルの参照が間違っていないかを確認してください。
それでも結果が異なる場合は、表示形式が「文字列」になっている可能性があります。

下図を見てみましょう。

参照範囲が「文字列」で入力されている場合は数値としてみなされず
文字として判断されるため、平均されなくなります。

解決方法は表示形式を「標準」「数値」に戻して入力しなおすと解決します。

■公式の説明

わかりやすいように説明したため公式と使用する語句が異なりますが

マイクロソフト公式の説明については下記のリンクを参照してください。☟

Application.WorksheetFunction プロパティ (Excel) | Microsoft Docs

■まとめ

いかがだったでしょうか。

これでマクロVBAでもMAX・MIN関数を使用することができました。

Application.WorksheetFunctionは他にも様々な関数を使用できるので

ぜひ参考にしてみてください。記事はこちらから☟

【マクロVBA知識 22】ワークシート関数の機能を使用する~WorksheetFunction~ ► 独学エクセル塾 (dokugakuexcel.com)

それでは次回の記事でお会いしましょう。

コメント

  1. […] 【マクロVBA知識 21】データの最大値・最小値をMAX.MINを使用して求める ► 独学エクセル塾 (dokugakuexcel.com) […]