「#ハイスコアの結晶」を便利にするGoogleスプレッドシート

ポケモンスナップ Advent Calendar 2021」2日目の投稿です。

adventar.org

 

Googleスプレッドシートで遊んでみました。
4人が4個を選んで並べる順列をもとにした計算式を作成しましたよ~というお話です。

 

<概要>

Newポケモンスナップで遊ぶ方々が集まって、ハイスコアをチーム戦でわいわい撮影しながら競う企画「#ハイスコアの結晶」のルールにあわせて、こんなものを作ってみました。

<ルール>

・1チーム4人
・お題のポケモンは4種
・チーム内で1人1種、全員が違うポケモンの写真を撮る

<やりたいこと>

4人の写真の合計が最高点になるときの点数と、そのときの「ポケモン・担当する人」の組み合わせを表示する。

 

<完成したもの>

Googleスプレッドシート

4人の合計が最高点になるシート - Google スプレッドシート

 

f:id:Rugnon:20211202142522p:plain

 

<使い方>

①A2~A5:チームのメンバーの名前を書く。
②B1~E1:お題のポケモンの名前を書く
③B2~E5:チームのメンバーがお題のポケモンを撮影した写真の点数を書く
④C8に4人の合計が最高点になるときの点数、C9~F10にポケモン・担当する人」の組み合わせが自動で表示される。

 

<解説>

使うだけなら、上記までを読んでいただければ大丈夫です。
どう計算しているのか知りたい方向けに、解説を書いておきます。

要は、4人が4個を選んで並べる順列です。
24通りならわざわざマクロを組むほどでもないと判断し、すべてExcel関数で完結させています。

非表示でこんな表が隠れています。
すべての「ポケモン・担当する人の組み合わせと4人の合計点」のパターン表です。

f:id:Rugnon:20211202142526p:plain

 

  • 合計はSUMを使っています。
    =SUM(F14:I14)

=SUM(引数)で数値の合計を出すことができます。

 

  • 最大はMAXを使っています。
    =MAX(J14:J37)

=MAX(範囲)で、範囲に含まれる数値のなかの最大値を出すことができます。

 

  • F14のピチューの点数は、VLOOKUPで表示しています。

f:id:Rugnon:20211202142529p:plain

=VLOOKUP(B14,$A$1:$E$5,2,FALSE)


→5000 と表示される


=VLOOKUP(検索値,検索する範囲(取り出したい値を含む範囲で書く),取り出したい値が範囲の何列目にあるか,FALSE)のようにつかいます。
正確には、近似一致を検索する場合はTRUE、完全一致を検索する場合はFALSEを指定するようです。今回は完全一致なのでFALSEを指定。

 

  • C10の組み合わせは、前述のVLOOKUPとMATCHを使っています。

f:id:Rugnon:20211202142532p:plain

VLOOKUP(MATCH(C8,J14:J37,0),$A$14:$E$37,2)


→リタと表示される

 

=MATCH(検索値,検索する範囲,0)
0は完全一致で照合するという意味です。1だと以下、-1だと以上になるようです。今回は完全一致なので0を指定。

MATCH(C8,J14:J37,0)は、
点数が21032を、各パターンの4人の合計の一覧(J14:J37)から完全一致で探すという意味で、9が返ってきます。
これをVLOOKUPと組み合わせると、
A14からはじまる見出し番号から9を探し、その行の2列目(ピチューの列数)を表示する
という意味になり、リタが表示されます。

 

Googleスプレッドシートで書きましたが、Microsoft Excelでも同じことができます。