« 列と列を入れ替える | トップページ | 2次元配列をランダムに並び換える »

2011年3月 5日 (土)

最大と最小

VBAを使い始めて間もなく困ることは
VBAで最大と最小をどうやって求めるか?
だと思います。

数式に使うMAXとMINのような関数が
当然、VBAの関数にもあると思っていました。

しかし実際にはありません。
最大と最小をVBAで求めるには、
ワークシート関数を使います。

ワークシート関数とは
数式に使うMAXとMINのような関数です。
すべてのワークシート関数がVBAで使えるわけではありません。
リストはVBAヘルプを参照してください。

MAXというワークシート関数をVBAで使うには次のようにします。

Application.WorksheetFunction.Max(1, 4, 7, 9)

上の値は9です。Double型になります。

引数には33個まで指定できます。
引数は数だけでなくRangeや配列も指定できます。
Rangeを引数に指定した例:

Application.WorksheetFunction.Max(Range("A1:D10"))

Rangeを複数指定することもできます。

Application.WorksheetFunction.Max(Range("A1:B10"), Range("C1:D10"))

配列を指定した例:

Dim vData As Variant
vData = Array(1, 4, 2, 6, 7, 3, 10, 33)

Application.WorksheetFunction.Max(vData)

上の値は33です。
Rangeと同様に配列も引数に複数指定できます。

また配列、Range、数値の混合も可能です。

Application.WorksheetFunction.Max(vData, Range("A1:D10"), 1, 4, 7, 9)

最小を求める場合は
上記のMaxの箇所をMinに変更して使ってください。

最大と最小はグラフをVBAで作成するとき
軸の最大と最小を指定するのに便利です。

ただこの方法では
最大値/最小値の配列内での場所やセルの場所はわかりません。

|

« 列と列を入れ替える | トップページ | 2次元配列をランダムに並び換える »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: 最大と最小:

« 列と列を入れ替える | トップページ | 2次元配列をランダムに並び換える »