VBAの勉強を始めてみた

色々試しています。

ひっそりとExcel関数のおさらい(乱数を発生させる)

今回は、エクセルで乱数を発生させる関数についてです。

 目次

 

RAND関数(0以上、1未満の乱数を生成する)

=RAND()
引数はありません。0~0.999999999999999の乱数を生成します。シート再計算(要するにシートに変化があった時)のたびに乱数が生成されます。

 

 

RANDBETWEEN関数(指定した範囲の整数の乱数を生成する)

=RANDBETWEEN(最小値,最大値)
最小値以上、最大値以下の整数の乱数を生成します。これも、シート再計算のたびに乱数が生成されます。

 

 

VBAで、RANDBETWEEN関数を使う

VBAで整数の乱数を生成するには、少しだけ工夫が必要です。
ズバっと、整数の乱数を生成するための関数はないので、Rnd関数(0以上、1未満の乱数を生成する) を応用して、例えば


Int((最大値 - 最小値 + 1) * Rnd + 最小値)


のようにする必要があります。

ん?なんのこっちゃ?

という人の為に解読を試みると・・・・・・ 

f:id:kouten0430:20180728152641j:plain

 

f:id:kouten0430:20180728152730j:plain

 

の、ような感じになります。

うーん・・・・・・なんかメンドくさいし、分かりにくいなぁと思う方は

VBAでも、WorksheetFunctionオブジェクトを介してExcel関数(の一部)を利用することができるので、シンプルに


WorksheetFunction.RandBetween(1, 9)


のように記述することもできます。
Randomizeによる、乱数系列の初期化もしなくてもいいようなので、楽チンです。

ぜひ、ご活用を。