- 締切済み
続テニス(ダブルス)乱数表
05/5/15にて、質問番号1388951でbun0212さんから質問、rio_dさん回答のマクロによる表作成について、極めて実用的であり、感服し作成を試みました。このことについて、以下の点につきご教示願います。 1)保存したものを開いて条件変更(面数、人数)してみましたが、セキュリティーを変更しても実行できません。どうすればよろしいのでしょうか。 2)人数ごとに一定回数内に同回数のプレイができるような条件をつけ加えることは、どうしたらできるのでしょうか。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。Wendy02です。 >前回回答者の返事を気長に待ちます。 ここのサイトでは、だいたい、1週間が過ぎると、固定の回答者が付かないと、返事が付く可能性が極めてすくないです。私は、特殊な方法によって、0件の回答の一覧表を出して、そこで掘り起こして返事をしています。 コードを書いた方は、VBAの専門の方ではないようですが、私は、その掲示してあったマクロは理解しています。ただし、おおもとのテニスの組み合わせとか、チームの作り方とかは、まったく知りません。 >20人参加ですので80割る20で全員4回のプレイができればよいのですが・・・・ でしたら、現状のコードで、10回で、必ず、4回は出てきていますが。 =COUNTIF($B$2:$B$11,"*[1]*") =COUNTIF($B$2:$B$11,"*[2]*") ・ ・ で、20まで出してみれば、必ず、4回になっています。一度、数えてみても分かるはずです。 それをマクロに反映するというのは、逆に面倒というか、こちらはこちらで作り直さなくてはならないような気がします。ですから、今あるものを、単純に計算して回数を決めるようにしていただけないのでしょうか? (コート面×4人) ÷ 人数 = 回数の確率/人 になりますから、 (コート面 × 4人)÷20人 = 0.4 回/人 10回すれば、一人当たりは、4回になるはずです。 5回すれば、一人当たりは、2回になるはずです。 それ以下には、該当する整数がありませんから、中途半端になってしまいます。 これをマクロに取り付けるというのは出来ないことではありませんが、元の内容のマクロとも性格が少し違って、作表の元の回数が変動することになってしまいます。 例えば、 =(A1*4)/B1 この式をどこかにおいておけばよいと思います。 その式が、整数にするためには、いくつが良いか考えればいいわけです。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。Wendy02と申します。 レスが付きませんね。少し、見てみました。そのマクロの書いた人は、もう時も経ちますので、読まれていないようですが、 >1)保存したものを開いて条件変更(面数、人数) A1 がコート数(面数) 人数は、B1 ~ ですが、ダブルスですから、当然、コート数 × 4以上の人数がないと、そのマクロは動きません。 ただし、Thisworkbook より、標準モジュールのほうがよいです。標準モジュールは、Visual Basic Editor を開いたら、挿入-標準モジュールで出てくる白い画面です。 >2) 一定回数内に同回数 私は、テニスはまったく知りませんので、意味が良く分かっていませんが、乱数とはいえども、組み合わせの抽出ですから、4人いれば、その内2人ずつペアを組みますから、 (4×3)/2 = 6 という数字が出ます。つまり、Excelの関数ですれば、COMBIN(人数,2) で、一応の組み合わせ数が出せます。その倍数を使えばよいと思います。ただし、コートチェンジは無視します。 本来、そのマクロには、回数制限を出さないといけないようです。そうしないと、同じものが出てきてしまいます。
お礼
お目に留めていただきありがとうございます。 1)保存したものを条件変更し表を作ることはどうにかできましたが、 2)「一定回数内に全員同回数のプレイ」の条件設定が、マクロがまったく未知のため設定できません。 前回回答者の返事を気長に待ちます。 例:2面20人の場合、1回分のプレイは8人が固定されるので10回分までに延べ80人がプレイできます。20人参加ですので80割る20で全員4回のプレイができればよいのですが・・・・
お礼
再度にわたりお手数をおかけしました。感謝します。 理屈はわかるのですが、実務が伴わないのです。所詮仲良し倶楽部のゲームですので、実践して評価を仰ぐことにします。 なお、昨年の回答にさかのぼりwendy02さんの方法を 再検討してみることにします。ご協力ありがとうございました。