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までのセルに記入された数値の最大値, 最小値を求めるマクロは下記のとおりです。

マクロ例:

  1. maxVal、minValを数字のみを扱うとする
  2. Application.WorksheetFunctionでExcelのワークシート関数を以下使用する。

  3. Max、Min関数を用いる(Range関数は、データの範囲を決定しています。)
  4. 結果をメッセージボックスに示す

という手順になっています。セル範囲にある文字列は無視されます。また、文字列だけの場合は結果が0となります。コンピュータは数値に直せるもの以外は大小の比較ができません。文字列が比較不可能なのはこのためです。

 Application.WorksheetFunctionの注意点

Application.WorksheetFunctionプロパティではMax, Min関数以外にもExcel関数を利用可能です。このプロパティを利用しないで値の最大値・最小値を求める方法もありますが、この場合はExcel関数を用いた方がマクロが簡単になります。しかし、使用する際には下記の点を考慮する必要があります。

・使用できるExcel関数は限られている。
・関数によっては書式が複雑になり、バグや処理速度低下の原因になる。

なるべくVBA関数を用いて、ワークシート関数を用いるのは最小限に抑える方がいいでしょう。


Welcome to UX MILK

UX MILKはより良いサービスやプロダクトを作りたい人のためのメディアです。

このサイトについて