• 締切済み

続テニス(ダブルス)乱数表

05/5/15にて、質問番号1388951でbun0212さんから質問、rio_dさん回答のマクロによる表作成について、極めて実用的であり、感服し作成を試みました。このことについて、以下の点につきご教示願います。 1)保存したものを開いて条件変更(面数、人数)してみましたが、セキュリティーを変更しても実行できません。どうすればよろしいのでしょうか。 2)人数ごとに一定回数内に同回数のプレイができるような条件をつけ加えることは、どうしたらできるのでしょうか。

みんなの回答

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

こんばんは。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 この式をどこかにおいておけばよいと思います。 その式が、整数にするためには、いくつが良いか考えればいいわけです。

coroxke
質問者

お礼

再度にわたりお手数をおかけしました。感謝します。 理屈はわかるのですが、実務が伴わないのです。所詮仲良し倶楽部のゲームですので、実践して評価を仰ぐことにします。 なお、昨年の回答にさかのぼりwendy02さんの方法を 再検討してみることにします。ご協力ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。Wendy02と申します。 レスが付きませんね。少し、見てみました。そのマクロの書いた人は、もう時も経ちますので、読まれていないようですが、 >1)保存したものを開いて条件変更(面数、人数) A1 がコート数(面数) 人数は、B1 ~ ですが、ダブルスですから、当然、コート数 × 4以上の人数がないと、そのマクロは動きません。 ただし、Thisworkbook より、標準モジュールのほうがよいです。標準モジュールは、Visual Basic Editor を開いたら、挿入-標準モジュールで出てくる白い画面です。 >2) 一定回数内に同回数 私は、テニスはまったく知りませんので、意味が良く分かっていませんが、乱数とはいえども、組み合わせの抽出ですから、4人いれば、その内2人ずつペアを組みますから、  (4×3)/2 = 6 という数字が出ます。つまり、Excelの関数ですれば、COMBIN(人数,2) で、一応の組み合わせ数が出せます。その倍数を使えばよいと思います。ただし、コートチェンジは無視します。 本来、そのマクロには、回数制限を出さないといけないようです。そうしないと、同じものが出てきてしまいます。

coroxke
質問者

お礼

お目に留めていただきありがとうございます。 1)保存したものを条件変更し表を作ることはどうにかできましたが、 2)「一定回数内に全員同回数のプレイ」の条件設定が、マクロがまったく未知のため設定できません。 前回回答者の返事を気長に待ちます。 例:2面20人の場合、1回分のプレイは8人が固定されるので10回分までに延べ80人がプレイできます。20人参加ですので80割る20で全員4回のプレイができればよいのですが・・・・

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

関連するQ&A

  • テニスダブルス組合せ

    こんにちは。草テニス愛好者です。 テニス乱数表の件でbun0212さんの質問があり、rio_dさんの回答が大変参考になりました。少し希望があります。(1)各々の人数組合せに共通しますが、最初の一巡では[1][2]:[3][4]、[5][6]:[7][8]・・・と若い順番からの組合せとなること(ご回答の参考例にある9人の場合のように)。(2)参考の9人の場合そうなっていますが、各メンバーのペア(パートナー)は必ず自分以外の全員と組めるようにすること。の2点ですが、何とかなりますでしょうか。よろしくお願いします。

  • テニス(ダブルス)乱数表 Excelマクロ

    テニス等のダブルスゲームのペアを決めるための乱数表を作りたいと思い、Web検索したところrio_dさんが作成されたExcelマクロプログラムを見つけました(http://oshiete1.goo.ne.jp/kotaeru.php3?q=1388951)。記載されている通りにマクロを作成しましたが、実行すると「SubまたはFunctionが定義されていません」というコンパイルエラーメッセージが出てしまいます。rio_dさんのマクロプログラムの最初に「Sub 乱数表作成()」がありますが、この( )の中に何かを入力する必要があるのでしょうか。この他にも空白の( )がいくつかあります。マクロについて全くの素人で何も分かりません。このrio_dさんのマクロプログラムを実行する方法を素人にも分かるように解説していただければ幸いです。 【rio_dさんが書かれたマクロは以下の通りです】 <マクロ準備編> (1)新規ブックを開き、とりあえず名前をつけて保存します。『てにす乱数表.xls』にしましょうか。 (2)メニューバーから、ツール→マクロ→Visual Basic Editorを選択します。   Visual Basic Editorが起動します。 (3)左側に「VBAProject(てにす乱数表).xls」というのがあると思います。  ツリー状になっていて、左の[+]で展開していくと、「ThisWorkbook」という  ものが表示されると思います。 (4)その「ThisWorkbook」をダブルクリックします。  右側に「~~.xls - Thisworkbook(コード)」というウインドウが表示されます。 (5)そこに、下記のコードをコピー&ペーストしてください。 (6)Visual Basic Editorを閉じます。 (7)ここで一旦上書き保存しておきましょう。 <データ準備編> (1)セルA1に、コート数を入力してください。数字でお願いします。 (2)セルB1から横方向に、人数を入れていってください。 (3)セルA2から縦方向に、試合数を入れていってください。 こんなかんじ  _A__B_C_D__E__F__G__H__I__J__K 1|  3  5  6  7  8  9  10  11  12  13  14… 2|  1 3|  2 4|  3 5|  4 6|  5 7|  6    : <データ作成編> (1)メニューバーから、ツール→マクロ→マクロ と選択してください。 (2)実行するマクロの一覧に「ThisWorkbook.乱数表作成」というのがでるので、   それを選択して「実行」してください。 (3)砂時計が消えたら完成です。 このマクロは実行するたびに結果が変わります。気に入らなかったら何度でも やり直してください。 また、全セルを消去すれば、データ準備からやり直すことも出来ます。 好きな表をいくつでも作ってください。 ちなみに100人とかデータ数がえらく膨大になると、なかなか計算が終わりませんので。 その場合は気長に待ってください。 '-----マクロ ここから----- Sub 乱数表作成() Dim iRow As Integer Dim iCol As Integer Dim iCnt As Integer Dim iCnt2 As Integer Dim iTmp As Integer Dim sNum() As String Dim bChk() As Boolean Dim bChk2() As Boolean Dim bFull As Boolean Dim iCourt As Integer iCol = 2 Do Until Cells(1, iCol) = "" iRow = 2 If Cells(1, 1) * 4 > Cells(1, iCol) Then iCourt = Round(Cells(1, iCol) / 4 - 0.5, 0) Else iCourt = Cells(1, 1) End If ReDim sNum(iCourt * 4 - 1) ReDim bChk(Cells(1, iCol)) ReDim bChk2(Cells(1, iCol)) For iCnt = 1 To Cells(1, iCol) bChk(iCnt) = True bChk2(iCnt) = True Next iCnt Do Until Cells(iRow, 1) = "" iCnt = 0 Do Until iCnt = iCourt * 4 iTmp = Round(Rnd(Second(Now)) * Cells(1, iCol) + 0.5, 0) If bChk(iTmp) And bChk2(iTmp) Then sNum(iCnt) = "[" & Trim(Str(iTmp)) & "]" iCnt = iCnt + 1 bChk(iTmp) = False bChk2(iTmp) = False bFull = False For iCnt2 = 1 To Cells(1, iCol) bFull = bFull Or bChk(iCnt2) Next iCnt2 If bFull = False Then For iCnt2 = 1 To Cells(1, iCol) bChk(iCnt2) = True Next iCnt2 End If End If Loop Cells(iRow, iCol) = sNum(0) For iCnt = 1 To iCourt * 4 - 1 Select Case iCnt Mod 4 Case 0 Cells(iRow, iCol) = Cells(iRow, iCol) & Chr(10) & sNum(iCnt) Case 2 Cells(iRow, iCol) = Cells(iRow, iCol) & ":" & sNum(iCnt) Case Else Cells(iRow, iCol) = Cells(iRow, iCol) & sNum(iCnt) End Select Next iCnt For iCnt = 1 To Cells(1, iCol) bChk2(iCnt) = True Next iCnt iRow = iRow + 1 Loop iCol = iCol + 1 Loop End Sub '-----マクロ ここまで-----

  • テニス大会ダブルスの乱数表の作成をお願いしたい

    テニス大会開催のため、プレーヤーの組み合わせに乱数表を使うことになり、過去の質問・回答を検索しテニス乱数表の作成法を2件見つけたのですが、1件は同じプレーヤーの組み合わせ(ペア)が複数組できてしまい、もう1件は一人当たりのゲーム数が同数にならない(一定の試合数で、ある人は2ゲーム、ある人は5ゲームなどバラつきが出る)ことがわかりました。 そこで以下の条件で乱数表の作成をお願いしたいのですが。 1.1日で完了するダブルスのテニス大会 2.参加者(プレーヤー)は、10-30人程度 3.コートは2面を並行使用の予定なので、一人が同時に2面に入らない 4.全員が一人あたり4ゲーム行う 5.全員が4ゲームともそれぞれ別の人とペアを組む(同じペアを複数回作らない) 6.対戦相手はそれ以前のゲームと同じ人でも構わない(5.があるので同じペアとの再戦はない) よろしくお願いします。

  • 4人1組 乱数表

    パーティーで4人1組でやるゲームを7回戦やるのですが(人数によって抜け番あり)、なるべく同じ人と組まないような組み合わせにするにはどのようにすればよいのでしょうか? 検索したらテニスのダブルスの乱数表はたくさん見つかったのですが、過去の質問にでてきたrio_dさんの乱数表(質問番号:1388951)を使ったところ問題が発生してしまいました…。 3回戦目で[1][7]:[6][8]、5回戦目で[16][6]:[7][8]、というのが存在してしまいペアは違っても結局[6][7][8]が2度同じグループになってしまったのです。 パソコン初心者でどのように変更すればよいのか、全く別の方法があるのかなど全然わかりません。できるだけ上手くバラバラに組むようにしたいと思います。よろしくお願いします!

  • テニス 乱数表

    テニスのダブルスゲームのときに使う乱数表を作りたいと思うのですが、10人までならインターネットで検索すると出てくるのですが、16~20人のは見つかりません。 過去の質問Q352925に同じ質問が出ていたので見たのですが、そこにでている”参考にしたページ”が、すでになくなっていました。エクセルで作るのだと思いますが、教えてください。。パソコン初心者なので、こんなことも・・・と思うことが解からないかもしれませんが、よろしくお願いします。

  • テニス乱数表の作り方

    一部固定のペアで後はランダムにペアを作る乱数表のアプリはないですか?

  • マクロで複数シートに条件付き書式をかける方法(excel)

    以前、同内容の質問をしたのですがお答えいただけなかったので(泣) マクロで複数シートの書式を変更するものを作りたいのですが、罫線やフォントは変更できるのに条件付き書式だけは先頭シートにしか設定されません。1シートづつ設定するマクロを作るしかないのでしょうか?

  • テニスのダブルスで。。。

    高校2年生になったものです。 今いる高校のテニス部に入ってから表彰を一度も受けたことがありません。 せっかく高校での部活動でテニスをやっているからには成績を残したいのですが、今も残せずにいます。あと大好きなテニスが出来るのもあと一年となりました。 このあと一年の間に成績を残したいのですが。。。 ◎ ダブルスのフォーメーションについて良いのあったら教えてください! (雁行陣 平行陣 Iフォーメーションは知ってます) ◎ ダブルスの戦術なども教えてください!!!!!!! ホントに悩んでいます。救いの手を指しだしていただけませんか? ちょっと大げさになりましたがよろしくお願いします。

  • テニスダブルス

    最近、テニスを始めました。ダブルスがほとんどですが、サーブの時に味方をよく直撃してしまいます。入るコースに立っているのですが、そういうものなんでしょうか? また、思いっきりボレーで打ち込んでくる人がいますが、わざとではないですが、結構顔面に当たるので、怖いです。プロってそんなシーンをあまり見ないですが、それはマナーで上半身を狙わないのでしょうか?

  • バドミントン・ミックスダブルス乱数表について

    初めまして。タイトルにありますようにミックスダブルスでの乱数表を探しております。いろんなサイトで探してはみたのですが、すべて数字ばかりで。できれば数字とアルファベットが混合になっている組み合わせ表が理想です(泣)2コート使用できるとして人数は10人から20人程度です。ミックスダブルスばかりではなく2試合に一度、男性対男性、女性対女性になるような(>_<)とても難しく私の頭では作成できないです。

専門家に質問してみよう