「ポケモンスナップ Advent Calendar 2021」2日目の投稿です。
Googleスプレッドシートで遊んでみました。
4人が4個を選んで並べる順列をもとにした計算式を作成しましたよ~というお話です。
<概要>
Newポケモンスナップで遊ぶ方々が集まって、ハイスコアをチーム戦でわいわい撮影しながら競う企画「#ハイスコアの結晶」のルールにあわせて、こんなものを作ってみました。
<ルール>
・1チーム4人
・お題のポケモンは4種
・チーム内で1人1種、全員が違うポケモンの写真を撮る
<やりたいこと>
4人の写真の合計が最高点になるときの点数と、そのときの「ポケモン・担当する人」の組み合わせを表示する。
<完成したもの>
4人の合計が最高点になるシート - Google スプレッドシート
<使い方>
①A2~A5:チームのメンバーの名前を書く。
②B1~E1:お題のポケモンの名前を書く
③B2~E5:チームのメンバーがお題のポケモンを撮影した写真の点数を書く
④C8に4人の合計が最高点になるときの点数、C9~F10に「ポケモン・担当する人」の組み合わせが自動で表示される。
<解説>
使うだけなら、上記までを読んでいただければ大丈夫です。
どう計算しているのか知りたい方向けに、解説を書いておきます。
要は、4人が4個を選んで並べる順列です。
24通りならわざわざマクロを組むほどでもないと判断し、すべてExcel関数で完結させています。
非表示でこんな表が隠れています。
すべての「ポケモン・担当する人の組み合わせと4人の合計点」のパターン表です。
- 合計はSUMを使っています。
=SUM(引数)で数値の合計を出すことができます。
- 最大はMAXを使っています。
=MAX(範囲)で、範囲に含まれる数値のなかの最大値を出すことができます。
- F14のピチューの点数は、VLOOKUPで表示しています。
→5000 と表示される
=VLOOKUP(検索値,検索する範囲(取り出したい値を含む範囲で書く),取り出したい値が範囲の何列目にあるか,FALSE)のようにつかいます。
正確には、近似一致を検索する場合はTRUE、完全一致を検索する場合はFALSEを指定するようです。今回は完全一致なのでFALSEを指定。
- C10の組み合わせは、前述のVLOOKUPとMATCHを使っています。
→リタと表示される
=MATCH(検索値,検索する範囲,0)
0は完全一致で照合するという意味です。1だと以下、-1だと以上になるようです。今回は完全一致なので0を指定。
MATCH(C8,J14:J37,0)は、
点数が21032を、各パターンの4人の合計の一覧(J14:J37)から完全一致で探すという意味で、9が返ってきます。
これをVLOOKUPと組み合わせると、
A14からはじまる見出し番号から9を探し、その行の2列目(ピチューの列数)を表示する
という意味になり、リタが表示されます。