• ベストアンサー

EXCEL 乱数発生の記録

A1~C1 に0~9の乱数を発生[=RANDBETWEEN(0,9)]させ Dの列に再計算[F9を押す]の回数、E~Gの列に出た乱数の値を入れたいのですが、関数で可能でしょうか。   D E F G 1  1 2 5 7・・・1回目は 2,5,7が出た。 2  2 8 1 0・・・2回目は 8,1,0が出た。 3  3 9 4 4・・・3回目は 9,4,4が出た。 4  4 0 3 2・・・4回目は 0,3,2が出た。 このように再計算を行うと下の行に追加していきたいのですが、可能でしょうか。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • shkwta
  • ベストアンサー率52% (966/1825)
回答No.3

つぎの方法でできます。 反復計算を利用した方法です。 (1)ツール→オプション→計算方法 で、「自動」と「反復計算」にチェックを入れ、最大反復回数を1にする。 (2)E1に、=IF($H$1>=ROW(E1),IF(ISNUMBER(E1),E1,A$1),"") (3)E1をF1,G1にコピー (4)H1に、=IF(I1=0,0,H1+1) (5)I1に、0 (6)E2に、=IF($H$1>ROW(E2),IF(ISNUMBER(E2),E2,A$1),"") (7)E2を、E2~G100(など、必要なだけ)コピー (8)D1に、=IF(ROW(D1)<$H$1,ROW(D1),"") (9)D1を、D2~D100(など、必要なだけ)コピー (10)ここで、I1を1に変える。 (11)F9を必要な回数押すと乱数が記録される。 (12)I1を0に戻すとリセットされる。

20007088
質問者

お礼

早々のご解答有難う御座います。 出来ました。私のやりたかった通りです。 ただ、1回目と2回目に同じ数字が入りますが 全然問題ありません。 自分で解決してみたいと思います。 ただ今、関数の勉強中ですので、また質問すると思いますが、よろしくお願いします。 有難う御座いました。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

>A1~C1 に0~9の乱数を発生[=RANDBETWEEN(0,9)]させ マクロは以下のとおりなのですが、この乱数には、癖があったような気がします。 思ったよりも出方が決まっているということです。これは、PCのランダム発生のメカニズムで、そのつど初期化しないと、決まった型になってしまうのだったと思います。 出来れば、乱数発生を(初期化=Randomizeしながら)、マクロで行うほうが良いかもしれません。 とりあえず、様子をみてください。 シートタブのところで、右クリック-コードの表示で、クリック 後は、以下を貼り付けてください。 Private Sub Worksheet_Calculate()  Dim ary  Dim rng As Range  Application.EnableEvents = False  ary = Range("A1:C1").Value  Set rng = Range("D65536").End(xlUp)  If Not IsEmpty(rng) Then   Set rng = rng.Offset(1)   rng.Value = Application.CountA(Range("D:D")) + 1 & "回目"   Else   Range("D1").Value = 1 & "回目"  End If  rng.Offset(, 1).Resize(, 3).Value = ary  Set rng = Nothing  Erase ary  Application.EnableEvents = True End Sub

20007088
質問者

お礼

早々のご解答有難う御座います。 関数を十分理解した上で、マクロの勉強をしたいと 思っています。 ただ今、関数の勉強中です。 いただきましたコードもノートに記載しておき、 マクロの勉強の際に、役立てたいと思います。 有難う御座いました。

  • macchan1
  • ベストアンサー率38% (52/136)
回答No.2

マクロで例えば10回計算させるなら以下のようなコードでできます。 Sub Sample() For i = 1 To 10 Range("A1:C1").Copy Range("E50000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues Calculate Next i End Sub

20007088
質問者

お礼

早々のご解答有難う御座います。 関数を十分理解した上で、マクロの勉強をしたいと 思っています。 いただきましたコードもノートに記載しておき、 マクロの勉強の際に、役立てたいと思います。 有難う御座いました。

  • macchan1
  • ベストアンサー率38% (52/136)
回答No.1

関数でやるなら、E1~G4などの範囲にすべ=RANDBETWEEN(0,9)を入力するのが良いと思うのですが、回数を分ける意味はあるのでしょうか? 回数を分ける場合はマクロ(A1:C1の値貼り付け)で対応するしかありません。

20007088
質問者

お礼

早々のご解答有難う御座います。 乱数で発生した3けたの数字を記録を残したかったので E1~G4などの範囲にすべ=RANDBETWEEN(0,9)を入力する では、記録を残せない為質問しました。 有難う御座いました。

関連するQ&A