エクセルで隠しホールを設定する方法とスコア管理

このQ&Aのポイント
  • エクセルでゴルフコンペのスコア管理を行うために、18ホールの中からランダムに12の隠しホールを抽出する方法を紹介します。
  • 抽出した隠しホールのスコアの合計に対して一定の計算を行い、ハンディキャップを算出する方法も説明します。
  • また、エクセルの関数を利用してランダムにPar3、Par4、Par5のホールを選択し、選ばれたホールのスコアを合計する方法も解説します。
回答を見る
  • ベストアンサー

エクセルでランダムに隠しホールを設定する方法

エクセルにてゴルフコンペのスコア管理を行おうと考えております。 コンペでは新ぺリア方式で順位をつけるつもりでいますが、 そのために18ホールの中からランダムで12の隠しホールを抽出しなければなりません。 (OUTからPar3 1ホール、Par5 1ホール、Par4 4ホール、INからも同じように Par3 1ホール、Par5 1ホール、Par4 4ホール抽出する) それらの隠しホールのスコアの合計の1.5倍から72を引いた値の80%がハンディキャップに なります。 (ご存知でしたら、いらぬ説明をして申し訳ありません。) これをふまえまして、まず9ホールの中からPar3、Par4、Par5のそれぞれのホールの抽出。 抽出したホールからランダムでPar3なら1つ選択、Par4なら4つ選択、Par5なら1つ選択し 個人の成績表から上記でランダムに選ばれたホールのスコアを合計し、上述した 新ぺリア方式のハンディキャップの算出計算をする。 といった、ことができればと考えています。 このような操作を行う場合、どのような関数で行うのが良いのでしょうか?

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.4

>もしよろしければ作業用セルも開示していただけますと幸甚です。 作業用テーブルは対象ホールの抽選用です。 H列に各ホールにランダム数を設定しました。 H2=RANDBETWEEN(1,99)*100+A2 RANDBETWEEN関数で1~99までの乱数を発生させ100倍したものにホール番号を加算しました。 ホール番号を加算する理由は選択された乱数からホール番号を抽出できるようにするためです。 I~K列は抽選のセルを配置しました。 I2はパー3のホールから1ホール、J2~J5はパー4のホールから4ホール、K2はパー5のホールから1ホールを選択する式ですがI2のセルをコピーすることで完成します。 I2=MOD(SMALL(IF(($E$2:$E$10=COLUMNS($A$1:C$1)),$H$2:$H$10,""),ROWS($A$2:$A2)),100) 入れ子の内側にあるIF関数は配列の値を返す必要があるので式を入力してCtrl+Shift+Enterで確定します。 IF関数で対象ホールを絞り込みSMALL関数で抽出します。 その後、MOD関数でホールNoを切り出しています。 L列は当選したホールの行に◎印を付加してハンディキャップの計算に使います。 L2=IF(COUNTIF($I$2:$K$5,"="&A2)>0,"◎","") 上記はINの9ホールについての抽選ですがOUTの9ホールも同じ方法で選択できます。

ama-chin
質問者

お礼

非常に詳しい説明、ありがとうございました。 ご教授いただきましたもので、ほぼ理想通りのものを 作ることが出来ました。 bunjii様の回答をもちましてベストアンサーとさせて いただきたく存じます。 誠にありがとうございました

その他の回答 (3)

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.3

>このような操作を行う場合、どのような関数で行うのが良いのでしょうか? 作業用のテーブルを使わないと数式が複雑すぎて難しいようです。 試案ですが添付画像のようにすると分かり易いかと思います。 >それらの隠しホールのスコアの合計の1.5倍から72を引いた値の80%がハンディキャップになります。 隠しホールのみ1.5倍でその他のホールは加算しなくて良いでしょうか? ハンディは端数を四捨五入しました。 =ROUND((SUM(IF((L2:L19="◎")*1,F2:F19*1.5,0))-E20)*0.8,0) 配列値を扱いますので式を入力後、Ctrl+Shift+Enterで確定します。 尚、B~D列は無くても計算に影響ありません。 H列は抽選用のランダム数で自動再計算のときは何処かのセルに入力等がある度に変更されます。 他の作業用セルについては必要があれば開示します。

ama-chin
質問者

お礼

回答ありがとうございます!!! まさしくこのようなものを作りたいと思っていたものを 現実に提示してくださった感じがいたします。 もしよろしければ作業用セルも開示していただけますと 幸甚です。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 確認したい事があります。  私は「新ぺリア方式」を行う場合には、outとinのそれぞれから6ホールずつ、Parの合計が48になるようにランダムに選ぶものであり、 >Par3 1ホール、Par5 1ホール、Par4 4ホール 等の様に、Parの数によって選ぶ数を決めたりはしないもの(例えばPar3、Par4、Par5が2ホールずつでも可)と思っていたのですが、違うのでしょうか?

ama-chin
質問者

お礼

回答ありがとうございます。 >確認したいことがあります。 わたしの理解では、そのように思っておりました。 しかしご指摘があって調べてみましたら、仰られた とおりでございました。 ぺリア方式とごっちゃにして覚えていたようです。 お恥ずかしいです。 ご指摘ありがとうございました。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

ランダムならRAND関数でしょうか。

ama-chin
質問者

補足

回答ありがとうございます。 隠しホールの選択にRAND関数を使うのだろおいうところまでは なんとなくわかるのですが、 たてばA列に1~18のホール番号をふり B列にそれぞれのParのあたい3or4or5が割り振られ C列以降にそれぞの個人のスコアを記入してあるとします。 A列の1~9まででB列がPar3のものを抽出(Vlookup関数?)し その抽出したものからランダムに1つ決定。(ここでRAND関数?) そののち、選ばれたホールの各人のスコアをハンディキャップ 算出用に値として返す。(ここら辺がどの関数を使えばいいのか不明) 同じ作業を、1~9ホールのPar4、Par5、および10~18ホール でも行う。 値とした返された12個の数値を合計し1.5倍し72を引く そのあたいの80%をハンディキャップとして出す。 (12個の値さへ出せればこの計算は出来ると思います。) 例えば A列 ホール数 B列 Par C列 個人のスコア とした場合 A B C 1 4 5 2 5 7 3 4 6 4 4 4 5 3 4 6 4 6 7 3 5 8 5 6 9 4 5 (簡便化のため9ホールまで) 上記のようなコースとスコアだった場合 5、7ホールがPar3なので、1~9のなかから5、7を 抽出しどちらかをランダムで選択、仮に5が選ばれたとしたら 5ホール目の個人のスコアを参照し、値4を選択 同じようにPar4のホールから無作為に4つ選択し 仮にそれが1、4、6、9ホールだった場合は値5、4、6、5を 選択。Par5のコースでも同じような作業を行い、 2ホールが選ばれた場合は値7となり、 ハンディキャップ={(4+5+4+6+5+7+(10~18ホールでの値の合計))×1.5-72}×80/100 という計算式の値を出すためにはそれぞれの関数をどのように 組み合わせればよいのかご教授いただきたく存じます。

関連するQ&A

  • ハンデキャップと隠しホールについて

    新ペリア方式でスコアを出すときについて教えてください。各ホールに設定されているハンデキャップ値が大きいインコース6ホール、アウトコース6ホールが隠しホールとなるのでしょうか。

  • 新ぺリア方式

     コンペなどでよく、ぺリア方式とか、新ぺリアでハンデを決めると 言われますが、私は今まで一度も集計したことなく、スコアーを出すだけで 実際、どう計算したら良いのか知りません。  あれは、どのような計算式でやるのですか?教えてください。

  • エクセルでランダムに隠しホールを設定する方法No2

    数日前にゴルフの新ぺリア方式のときの隠しホールをエクセルで ランダムに設定する方法を質問させていただいたものです。 IF関数で対象ホールを絞り込みSMALL関数で抽出し、 その後、MOD関数でホールNoを切り出す方法をここで 教えていただいたのですが、どうしてもうまくいかず、 #VALUE! が帰ってきてしまいます。 簡便化するため以下のように検定してみました。 A列に1-9までの番号。 B列には2-5までの任意の数。 仮にB列の数字が"4"であるものの中から どれか一つを選ぶという条件を付け、 D列のD2にその番号(1-9)を返す。 というサンプルにいたしました。 しかし、やはりD2の結果には#VALUE!が帰ってきます。 ただ、B2が"4"で有った場合のみ#VALUE!ではなく 数値が表示されますが、この場合も、B列に"4"が 割り当てられている番号だけでなく、A列の番号の どの番号でも再計算のたびに表示されます。 A列 B列 1 3 2 2 3 5 4 3 5 4 6 3 7 5 8 2 9 4 C列には抽選のためのランダム数を割り当てるため C2=RANDBETWEEN(1,99)*100+A2 D2には抽選の結果当選した番号を表示するため D2=MOD(SMALL(IF(B2:B10=4,C2:C10,""),1),100) と入力しました。 検証していただき、訂正の必要がある箇所がありましたら ご指摘いただきたく存じます。

  • コンペでの上位入賞

    ダブルぺリア(新ぺリア)でスコアを集計するゴルフコンペで上位に食い込む作戦などはあるのでしょうか? 小生のスコアは大体85くらいですが・・・

  • エクセルのDCOUNT関数で二つの条件を満たす個数を数えたい

    エクセルのDCOUNT関数で二つの条件を満たす個数を数えたい 実は先に同様の質問をしてご回答を頂きましたが、やりたかったことがうまく質問できていなかったので再度質問させていただきます。 自分で考える能力が無いものですみません(._.)。 テーマはゴルフのスコア分析とお考え下さい。1行目が各ホールのパーの数字、2行目がそれに対応するスコアが入っているというデータがあります。 Par---- 4 4 3 5 4 ・・・ Score-- 5 4 5 4 4 ・・・ このような感じです。 このデータで、Parが4のホールで、4で上がった数(パーを取った個数)を集計する方法が分かりません。同様に、Parが4のホールで、3(バーディ)を取った数(個数)も集計したいのです。countif関数ではpar4のホールの数を数えることができますが、その中でパーやバーディやボギーで上がった個数をそれぞれ取りたいのです。 DCOUNTでは、列の見出しが無いのでうまく作動してくれません。どうも、行と列が逆のようです。1ラウンドのデータが2行に分かれていて、1行目がパー、2行目がスコアという形になっているので、このデータの行と列を入れ替えるという作業は避けたいのです。 エクセル関数初心者にご指導をよろしくお願いします。

  • 上手いネット算出方法ありませんか?

    会社の小さなサークル(8名)で毎年2回、春と秋にコンペを開催しています。 もう16回になります。 参加者のレベルは、80~90台が1人(Aさん)、90台が1人(Bさん)、100台が2人(Cさん、Dさん)、それ以上が4人(E、F、G、Hさん)です。 当初5回はダブルペリア方式でハンデを算出してスコア集計してました。 それ以降はその5回の平均ハンデをローカルハンデとして、ハンデキャップ方式でスコア集計しています。 ローカルハンデは、1位が3割カット、2位が2割カット、3位が1割カットされ、次回のハンデとしています。 上記を前提に、ここからがご相談です。 主賓的な存在のDさんに1度くらいは優勝させてあげたいのですが、よい方法はありませんか? 全16回の開催で、ほとんどAさん、Bさん、たまにCさんの3人しか優勝していません。 Dさんは、2位とか3位とかばかりで、ハンデが減る一方で(実力以上のハンデになっています)、優勝から遠ざかるばかりです。 ダブルペリアに戻そうとも考えましたが、Aさん、Bさんとは実力差があり、かなりハマらないと優勝には届きそうもありません。 何かよいスコア算出方法はありませんか? Dさんに限らず、さらに実力差があるEさん以降の人達でも優勝できる可能性のあるスコア算出方法があれば、教えて下さい。 ダブルペリアで制限(ダブルパー以上はカット、ハンデ36が上限、など)無しにしたらどうでしょう?有効ですか? このままでは、優勝者が限定され、マンネリ化を引き起こしそうです。

  • エクセルVBAでのコード番号抽出について

    エクセルの売上一覧から会員番号ごとにデータを抽出して、合計金額を算出し、新しくデータを作りたいのですが、コード番号は顧客の購入分存在しますので、コード番号は人によって 5個あったり20個あったりします 当初、forの中にIF分を記載するなど考えましたが、どうしても同じ会員番号のデータだけを取り出すということが出来ていません。 同じ会員番号のデータだけを抽出し、他のシートへそれらの合計件数、合計金額を書き出したら 抽出したデータは削除し、また次の重複データを抽出し、合計件数、合計金額を書き出し・・・ ということが実行できるコードがありましたらお教えください。

  • EXCEL - 合計を指定してそれに合うように複数のセルを選択する方法(再送)

    説明が少し難しいのですが、Excelを使って任意の数列の中から条件を決めた上で指定した合計の数に合うように処理するにはどうすれば良いですか? 具体的に言いますと、A列にランダムにある金額が並んでいるとします。 A 1,230 1,060 4,500 3,680 2,830 ・・・ それで、例えばこれらの金額の中から自動的に3つを選んで、その合計が5,000になるように処理したいのですが、どのようにすればいいでしょうか? つまり別のセルで合計金額を指定すれば任意にその合計に合うように複数のセルが選択される方法が知りたいです。 説明不足かもしれませんが、なんとかできる方法を知りたいです。 どうぞ宜しくお願いします。

  • 選択したものだけを対象とする方法

    PGはVB6・DBはAccess2002という環境です。 現在、テキストボックスに条件を入力し、一部でも入 力条件と一致すればDBより抽出するようにしていてい ますが、データの状態により、抽出する数は変動しま す。このランダム数、抽出してきた結果の中で、選択 したもののみを更に次のステップへと活用していきた いのですが、この「選択したもののみ」という箇所の コードが分かりません。ご存知の方、是非、ご教授願 います。 お願いします。

  • テキサス・スクランブル

    先日、知り合いのゴルフの達人から、「テキサス・スクランブル」方式のコンペは盛り上がって面白い、と聞きました。ネットで調べてみると余り掲載ページがなく、詳しいルールなどよくわかりません。 ◆ネット調査でわかったルール ・4人1組で、複数組でプレー ・各組での競争 ・ティーショットからホールアウトまで4人が同じ位置から打つ ・4人の中で、ベストショットを選択 ・ティーショットの回数は1人最低3回?の縛りを付ける ◎ルールをご存知の方、詳しく教えていただけませんでしょうか?たとえば誰がボール選択をするのか…など。 ◎実際にこの方式でプレーされた方で、どういう盛り上がり方であったのか、教えていただけませんでしょうか? よろしくお願いします。

専門家に質問してみよう