• 締切済み

エクセル関数で対応可能でしょうか?

エクセルで対応可能かどうか教えて下さい。 1~65536の乱数を発生させて、1000回試行した時、 ・A 乱数値が1~16384だった時の回数 ・B 乱数値が16385~32768だった時の回数 それぞれA、Bの値は出せるのでしょうか?

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! タイトルの >エクセル関数で対応可能でしょうか? を見逃していました。 一例です。 ↓の画像で、 A1セルに「1」を入力 → Excel2007以降の場合は画面右上 Σのアイコンの下にある下向き矢印の「フィル」のアイコンをクリック → 連続データの作成 → 「列」を選択 → 「停止値」に1000 を入力しOK これで1~1000までの連番がA列に表示されましたので、 B1セルに先ほどの数式 =RANDBETWEEN(1,65536) という数式を入れ、フィルハンドルでダブルクリック! そしてG2セルに =COUNTIF(B:B,"<="&F2) G3セルに =COUNTIFS(B:B,">="&D3,B:B,"<="&F3) という数式を入れています。 これでF9キーを押すたびに出現回数が表示されると思います。 何度も失礼しました。m(_ _)m

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! VBAになりますが、一例です。 まずA1セルに =RANDBETWEEN(1,65536) という数式を入れておいてください。 次に画面左下の数式を入れたセルのSheetのSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long Range("B:C").ClearContents For i = 1 To 1000 ActiveSheet.Calculate If Range("A1") >= 1 And Range("A1") <= 16384 Then Range("B1") = Range("B1") + 1 ElseIf Range("A1") >= 16385 And Range("A1") <= 32768 Then Range("B2") = Range("B2") + 1 End If Next i End Sub 'この行まで これでB1セルに1~16384 だった回数が、 B2セルに 16385~32768 だった回数が表示されると思います。 ※ 中には2度以上同じ数値が出現することがあるかもしれませんが、 それは考慮していません。 1000回のデータを表示させたい場合はコードに少し手を加えれば、別列に表示は可能です。 ※ 何度もマクロを実行するたびに表示される回数が違ってきますが、 これでもよいのでしょうかね?m(_ _)m

すると、全ての回答が全文表示されます。
  • FEX2053
  • ベストアンサー率37% (7995/21384)
回答No.1

=RAND()関数を1000セルに設定して、COUNTIF関数で 数えればいいだけだと思いますが。 ダイナミック乱数を発生させてにカウントする必要はないと 思いますけど。

すると、全ての回答が全文表示されます。

関連するQ&A