
Excelで乱数を扱いたくて、関数を使いました。
なんでもよいのでランダムな値が欲しいだけなら工夫はいらないですが。。

Excel
乱数を使いこなす!
Excelで乱数を使うことがあると思います。
あえてランダムに並べ替えたいとか、テストデータを作るとかいったことでしょうか。
何も加工しなければ1未満の乱数を得ることになるわけです。整数など、決まったかたちにしたいなら、工夫が必要です。
乱数は少数で返される
Excelで乱数(ランダムな値)を得るためには、大きく2つの方法があります。
関数を使うか、マクロを書くかです。
基本的には関数でいきたいわけですね。

それぞれに使い勝手などもあると思いますので、先にまとめます。
関数 → Rand()
関数で乱数を得る場合は以下です。
=Rand()
引数は取りません。
これだけコピペで値が得られます。

0以上1未満のランダムな少数が返されます。(セルに表示されます。)
再計算(ブックを開くなど)のたびに値が変わります。
毎度変わりますし、小数第9位までの値なので、いくつのセルに設定しても、基本的に重複することはないでしょう。
VBA → Rnd
VBA(マクロ)で乱数を得る場合は以下です。
Rnd
返される値はSingleです。
が、VBAなのであまり気にしなくてもなんとかなってしまいます。

0以上1未満のランダムな少数が得られます。
適当な変数に代入するなり、そのまま使うなり、よきように取り扱います。
イミディエイトウィンドウには小数第7位までの値が返ってきています。
VBAを走らせるたびに値は異なります。
その都度どうするかはプログラム次第ですね。
自然数を得たいなら最大値を乗算
乱数を取り扱うときに、正の整数だとか自然数だとかで得たいということがあります。
Excelの関数でもマクロ関数でも、小数が返されてしまうので、ちょっとした工夫が必要です。

「いくつまでの乱数」といった使い方が多いと仮定して。
たとえば「10までの自然数」ということにしましょう。
関数なら以下。
=Roundup(Rand()*10,0)
マクロなら以下。
Application.WorksheetFunction.RoundUp(Rnd * 10, 0)
長いですかw
短く書くなら、以下の方法もあります。
Int(Rnd * 10) + 1
これらを基本に、いろいろと計算させればよいかと思います。
結果に「0」を得たいなら、最小値と最大値の考え方を変えましょう。
関数は切り捨て(RoundDown
)を使って、最大値に1を加える考え方です。
とはいえ、そのようなことはせずに計算してしまってもよさそうです。
ご意見やご感想などお聞かせください! コメント機能です。