Excel VBAで指定した範囲の最大値・最小値を取得する:Max, Min
Excelで扱うことの多い最大値Maxと最小値Minですが、実はVBAには関数が存在しません。そこで、Excelのワークシート関数を用いて、VBAでも最大値と最小値を求める方法をご紹介します。
VBAでMax,Minで最大値や最小値を求める
VBA関数も含め、VBAではメソッド・プロパティでもMax, Minというのは存在しません。そこで、Excel-VBAではExcelのワークシート関数Max, Minを「Application.WorksheetFunctionプロパティ」により使用します。例えば、セルB2~H8までのセルに記入された数値の最大値, 最小値を求めるマクロは下記のとおりです。
マクロ例:
Sub Max_Min_Sample()
Dim maxVal As Long, minVal As Long
'Excelのワークシート関数を使う
With Application.WorksheetFunction
'セルB2~H8までのセルに記入された数値の最大値, 最小値を求める
maxVal = .Max(Range(Cells(2, 2), Cells(8, 8)))
minVal = .Min(Range(Cells(2, 2), Cells(8, 8)))
End With
MsgBox "最大値:" & maxVal & vbCrLf & "最小値:" & minVal
End Sub
- maxVal、minValを数字のみを扱うとする
-
Application.WorksheetFunctionでExcelのワークシート関数を以下使用する。
- Max、Min関数を用いる(Range関数は、データの範囲を決定しています。)
- 結果をメッセージボックスに示す
という手順になっています。セル範囲にある文字列は無視されます。また、文字列だけの場合は結果が0となります。コンピュータは数値に直せるもの以外は大小の比較ができません。文字列が比較不可能なのはこのためです。
Application.WorksheetFunctionの注意点
Application.WorksheetFunctionプロパティではMax, Min関数以外にもExcel関数を利用可能です。このプロパティを利用しないで値の最大値・最小値を求める方法もありますが、この場合はExcel関数を用いた方がマクロが簡単になります。しかし、使用する際には下記の点を考慮する必要があります。
・使用できるExcel関数は限られている。
・関数によっては書式が複雑になり、バグや処理速度低下の原因になる。
なるべくVBA関数を用いて、ワークシート関数を用いるのは最小限に抑える方がいいでしょう。
ポップインサイトでは、インタビューなどで得た実際の声に基づき
情報設計、UX戦略、Webサイト改善をご支援しています
ポップインサイトは、専任UXチームがお客様の一員となって伴走支援し、ユーザー起点の意思決定に貢献する「UXデザイン伴走/内製化支援(UXRO)」をご提供しています。
ビジネスの目的にあわせ、最適な調査や分析手法を提案・実施し、課題解決までサポートします。WebサイトのUX改善に課題がある方はお気軽にご相談ください。