2017/7/20
【自称 経営管理本部の便利屋】ベランダに飛来する鳥の糞害対策をしてみた。
こんにちはシステムチーム小杉です。 やっと梅雨が明けましたが、毎日蒸し暑い日が続きますね。最近では室内で、しかも就寝中に熱中症になる人が多...
本日の人気記事
皆さまこんにちは、ミスターです。
先週末から一気に気温が下がり本格的に冬がやってきました。
これからの季節、より一層体調管理には十分気をつけて過ごしていきたいですね!
さて今日はブログネタに困った時に度々登場するExcelでできる便利ツールコーナーになります。
しかも仕事とは関係ない「ゴルフスコア集計」について
全くゴルフをやった事のない私が解説していきたいと思います!
ゴルフのスコア集計なんて、18ホールの打数合計が少ない人順に並べ替えたら終了じゃないの?と私も最初は思っていたのですが、そう単純なものではなくて、どうやらさまざまなルールに基づいた集計方法があるようです。
単純じゃない要因としてはプレイヤー個人に対して設定されるHDCP(ハンデキャップ)という特定の数値で、最終的に打数合計からこのHCを差し引いた数値がその人の最終スコアとして採用されます。
今回はこのややこしいHDCP(ハンデキャップ)ルールの中のひとつ「ダブルペリア方式」についてミスなくなるべく自動的に算出し、スコア計算を楽にする事を目標に進めていきたいと思います。
これに対応できれば他のルールについても少しアレンジする程度で対応できるでしょう!
さまざまな集計方法の中でもよく採用されるが「ダブルペリア方式」というもので集計ルールは以下になります。
まさに表計算ソフトExcelが得意そうな感じですね!
一番面倒なのが1の隠しホールが固定ではなく毎回変わる事でこれに汎用的に対応する事が必須となります。
まずは上記の仕様に基づき、Excelで↓のような表を作成してみました。
上部1~3行目にコースのパースコア情報と、隠しホールを任意に設定できる表を設定しました。
下部には個人のホールごとのスコアとその合計スコア、そしてダブルペリア方式によって算出されるHDCPと最終スコア(NET)が表示される予定です。
上部の表にコースによって異なるパースコアと、毎回変わる隠しホールに「1」を設定した上で下部の表の個人スコアに各ホールの打数を入力することで自動的にダブルペリア方式のスコアを算出していきます。
※補足ですが、その横の隠しホールの合計スコアやパースコアは集計計算用に用意しました。
では早速、ここに関数を設定していきましょう!
設定①「隠しホールの合計スコアを集計する」
このルールの肝である毎回変わる隠しホールの合計打数を集計します。
個人スコア入力用の表の右から2列目「隠しホールの合計スコア」のセル(Y6)に以下の関数を入力します。
=SUMIF(C$3:T$3,1,C6:T6)
関数「SUMIF」は指定した範囲に対して指定した条件に基づいて合計する関数です。
今回の場合は、指定した範囲「C6:T6」(個人ごとのスコア入力部分)に対して指定した条件に基づいて「C$3:T$3」(上部の表で隠しホールとして「1」を設定したホール)の合計できればOKです。
※ちなみに関数にいれている「$」マークは後ほど行う関数のコピーペースト時に対応する為です。
設定できたら正しく計算されているか確認してみましょう
正しく反映されていることが確認できたらセル(Y6)に設定した関数をコピーし、必要なところまでそのまま下方向に貼り付けます。
設定②「全ホールのパースコアを集計する」
こちらは簡単ですね!
単純に上部の表に設定したパースコアを合計するのみなので以下の関数を下部表のZ列に設定しましょう
=SUM(C$2:T$2)
基本的に72になるはずなので表上部のパースコアの入力チェックにもなりますね!
設定③「HDCPを計算する」
いよいよ今回のキモになるHDCPの計算です。
下部の表の「HDCP」の列(W6)に以下の関数を設定します。
=MIN(MAX(((Y6*1.5)-Z6)*0.8,0),36)
関数がネスト(入れ子)されており若干見難いので分解して色分けしてみると以下のようになります。
=MIN(MAX(((Y6*1.5)-Z6)*0.8,0),36)
ネストされた関数は内側から計算されていきますので内側から見ていきましょう
まず青色の部分「((Y6*1.5)-Z6)*0.8」はルールに基づいて
設定①で求めた隠しホールの合計スコア(Y6)に1.5を掛け
上記から全ホールのパースコア(72)を差し引き
さらに0.8を掛けた数値
となります。
次にオレンジ色の部分ですが、これは根本的な計算には影響ない部分になります。
個人のスコアを入力していない状態だと計算結果にマイナスの数字が表示されるのを防ぐ目的での設定で、何も入力していない場合は0が表示されるようになります。
MAX(A,B)
でAとBで大きいほうの数字を表示する関数になります。今回の場合は「B」に0を設定しているのでマイナスの数値が青色の部分で計算された場合は強制的に0を表示させるようにしています。
最後に緑色の部分になります
HDCPの上限が36と定められているので、計算結果が36を超えていた場合の調整の部分になります。
=MIN(A,B)
でAとBで小さいほうの数字を表示する関数になります。のでBに36を設定しこれまでの計算結果が36を超えていた場合は一律36に丸め込まれます。
では早速正しく計算されているかチェックしましょう
この例でいくと
( 隠しホールの合計スコア55 × 1.5 – 72 ) × 0.8 = 8.4 で合っていますね!
正しく反映されていることが確認できたらセル(W6)に設定した関数をコピーし、必要なところまでそのまま下方向に貼り付けます。
設定④「NETを計算する」
最後にトータルスコアからHDCPを差し引いたNETの列に関数を設定すれば完了です。
今回の表でいくとOUT(1~9ホール合計)列とIN(10~18ホール合計)列を足してHDCPで引けば完成なので以下の関数をセルX6へ設定します。
=U6+V6-W6
そしてこちらも必要なだけ下方向へコピーペーストしましょう。
これで設定は完了です。
あとは個人のスコアを入力したあとでNETの列でソートすれば自動的にスコアの計算から順位確定まで完了します。
以上、最低限の入力でゴルフのスコアを集計するExcelの作成についてでした!