[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAで毎日固定の乱数を発生させたい』(ラジヲ)
いつもお世話になっております。
毎日一定数の乱数を生成したいのですが、
オフライン端末で数値を共有する必要があり、
日別に同じ結果を出したいと考えております。
Randomizeに日付のシリアル値を入れる事で、
共通のシード値で乱数を発行するマクロを作成しました。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Sub TEST()
Randomize (DateValue(Date))
For i = 1 To 10
Cells(i, 1) = Rnd
Next
End Sub
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
1回目の結果
0.268306911
0.360770822
0.550603211
0.01693368
0.197959363
0.852331042
0.484369814
0.240292072
0.703909576
0.056404233
開いたまま2回目の実行結果
0.87973386
0.817139387
0.934549272
0.730940223
0.083405554
0.238595009
0.822770298
0.858513474
0.573976815
0.397008181
実行をすると1回目、2回目の結果が異なっており、
エクセルファイルを開き直してから再度十個すると
同じ1回目、2回目の結果が得られます。
これを1回目の結果しか生成しないようにする事は可能でしょうか?
仕様上難しいようでれば、マクロ実行後に上書保存して終了する処理等の方法で、開いたまま2回目を実行できないような作り方で解決しようと考えています。
機能追加や動作検証の上で不便なのでマクロ上で解決策があればお知恵を貸して頂きたく。
よろしくお願い致します。
< 使用 Excel:Excel2016、使用 OS:Windows7 >
こういう時はまず、ヘルプを確認しましょう
こう書いてあります。 >メモ 乱数系列を繰り返すには、数値を指定して Randomize ステートメントを実行する直前に、 >負の引数を指定して Rnd 関数を呼び出します。引数 number に同じ値を指定して Randomize >ステートメントを使用しても、前の乱数系列を繰り返すことはできません。
Sub TEST()
Rnd (-1) Randomize (DateValue(Date)) For i = 1 To 10 Cells(i, 3) = Rnd Next
End Sub (´・ω・`) 2019/09/30(月) 12:06
Rnd (-1) になっやってますが、(-1) のかっこいらないです。 (´・ω・`) 2019/09/30(月) 12:07
御回答ありがとうございます。
無事希望の処理を行う事が出来ました。
公式のヘルプを見に行きましたが、普通に書いてありますね……。
関数の紹介サイトとか「乱数 固定値」とかでずっと探しておりました。
応用はともかく、基本的な処理は公式を見た方が早そうですね。
勉強になりました、ありがとうございました。
(ラジヲ) 2019/09/30(月) 13:20
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.