- ベストアンサー
エクセルの使い方を解説!質問内容を簡潔にまとめます!
- エクセルの使い方についての質問を解決します。エクセルは複雑ですが、簡単に活用する方法をご紹介します。
- エクセルでのランダムな数字の入力や確率の計算方法を知りたい方へ。重要なポイントをまとめて解説します。
- 30回繰り返されるエクセルの操作を自動化する方法をご案内します。自分で数える手間を省きたい方におすすめです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
100行30回を3000行1回ですませてよければ A3000(左上のセルの番地が表示されるところにA3000と入力しEnterするとそこに飛びます) とB3000に =RAND() C3000に =A3000>=0.9 D3000に =B3000>=0.9 と入力してA3000からD3000まで選択しコピーします 選択したままCtrlとshiftキーを同時に押して矢印キーの上向きを押すと一番上まで選択されますからそのままEnterキーを押すと式がすべてコピーされます。 E1に =IF(MATCH(TRUE,OFFSET($C$1,ROW(C1),0,100),0)<MATCH(TRUE,OFFSET($D$1,ROW(D1),0,100),0),"A","B") E2に =IF(MATCH(TRUE,OFFSET($C$1,ROW(C1)*100,0,100),0)<MATCH(TRUE,OFFSET($D$1,ROW(D1)*100,0,100),0),"A","B") と入力して E2をコピーしてE3からE30まで貼り付けます。 これで、E列に100行ごとの先に0.9以上になった列が表示されます。 F1に =COUNTIF(E:E,"A") G1に =COUNTIF(E:E,"B") とすれば、それぞれの列の合計点数が出ます。
その他の回答 (4)
- kagakusuki
- ベストアンサー率51% (2610/5101)
まずA1セルに次の関数を入力して下さい。 =RAND() 次に、B1セルに次の関数を入力して下さい。 =IF(A1<0.9,"",COUNTIF(INDEX(A:A,FLOOR(ROW()-1,100)+1):A1,">=0.9")) 次に、A1~B1のセル範囲をコピーして、C1~D1のセル範囲に貼り付けて下さい。 次に、E1セルに次の関数を入力して下さい。 =IF(MOD(ROW(),100),"",IF(ISERROR(1/(MATCH(1,INDEX($B:$B,FLOOR(ROW()-1,100)+1):$B1,0)>=IFERROR(MATCH(1,INDEX($D:$D,FLOOR(ROW()-1,100)+1):$D1,0),9999999))),"","左")&IF(ISERROR(1/(MATCH(1,INDEX($D:$D,FLOOR(ROW()-1,100)+1):$D1,0)>=IFERROR(MATCH(1,INDEX($B:$B,FLOOR(ROW()-1,100)+1):$B1,0),9999999))),"","右")) 次に、A1~E1のセル範囲をコピーして、A列~E列の2行目~3000行目に貼り付けて下さい。 次に、G2セルに「左が先」、G3セルに「右が先」、G4セルに「同時」、H1セルに「回数」、I1セルに「割合」と入力して下さい。 次に、H2セルに次の関数を入力して下さい。 =COUNTIF($E:$E,"左") 次に、H3セルに次の関数を入力して下さい。 =COUNTIF($E:$E,"右") 次に、H4セルに次の関数を入力して下さい。 =COUNTIF($E:$E,"左右") 次に、I2セルに次の関数を入力して下さい。 =$H2/SUM($H$2:$H$4) 次に、I2セルをコピーして、I3~I4のセル範囲に貼り付けて下さい。 これで「左右の列で100行ずつ乱数を発生させた際に、左右どちらの列の方が先に0.9以上の値が発生するのか」という事を30回繰り返した際に、左の列が先の場合、右の列が先の場合、左右が同時の場合のそれぞれの回数と割合を求める事が出来ます。
お礼
ありがとうございました。参考になりました。
- keithin
- ベストアンサー率66% (5278/7941)
A2,B2以下に =RAND() A1に =IF(MATCH(TRUE(),INDEX(A2:A999>=0.9,0),0)>MATCH(TRUE(),INDEX(B2:B999>=0.9,0),0),"","A") B1に =IF(MATCH(TRUE(),INDEX(A2:A999>=0.9,0),0)<MATCH(TRUE(),INDEX(B2:B999>=0.9,0),0),"","B") A:B列を右に必要数コピー,1行目のAの数とBの数をCOUNTIFで数えて完成。 #AB同じ行に0.9以上が初出した(引き分けた)ときは,どちらにも1点としている
お礼
ありがとうございました。参考になりました。
- m_and_dmp
- ベストアンサー率54% (987/1817)
100回では、AとBが五分五分にならないことが多いです。 つぎのサンプルは、Sheet1 のA2 とB2 にVBA のRND 関数(エクセルのRand() に相当)でランダムな数字を求め、その数が0.9以上の場合、AまたはBのスコアをプラス1します。これを5000回繰り返します。 このサンプルでは、複数行のスコアを求める代わりに、複数回繰り返すことで同じ事を実現しています。 マクロ実行にエクセルの表示を有効にして、A2およびB2に乱数が表示(刻々と変化する)されるようにしました。 マクロが終了すると、A2 にAのスコアが、B2にBのスコアが表示されます。 Sub Prob() Application.ScreenUpdating = True With ActiveSheet AC = 0 BC = 0 For i = 1 To 5000 A = Rnd .Range("E2") = A B = Rnd .Range("F2") = B If A >= 0.9 Then AC = AC + 1 If B >= 0.9 Then BC = BC + 1 Next i .Range("E2") = AC .Range("F2") = BC End With End Sub
お礼
ありがとうございました。参考になりました。
- Prome_Lin
- ベストアンサー率42% (201/470)
「A1」セルに「=RAND()」と入力します。 その場所で「Ctrl+C」として、「A1」から「BH100」までを範囲指定して、「Enter」します。 「A101」セルに「=Countif(a1:a100,">0.8999999")」と入力します。 「A101」のところで「Ctrl+C」して、 「A101」から「BH101」まで範囲指定して、「Enter」します。 すると、「101行目」にそれぞれの列の、値が「>0.899999」の個数がカウントされますが、問題は、何かするたびに、「=RAND()」の値が変わることです。 それがイヤなら、「A1」から「BH100」まで乱数で埋まったら、そのまま(範囲指定されている状態のままで)、「Ctrl+C」をして、メモ帳に貼り付け(Ctrl+V)して、今度は、メモ帳で「Ctrl+A」(すべて選択)、「Ctrl+C」して、エクセル上で「Ctrl+V」(貼り付け)すれば、関数は消えて、数値になってしまいます。 その後、「A101」に「=Countif(・・・)」~してください。
お礼
ありがとうございました。参考になりました。
お礼
ありがとうございました。参考になりました。