ほうこうレポート

ほうようポケモン、こうもりポケモン。

【ポケモン8世代まで】KPをとるExcelシートを作った話

はじめに

剣盾の対戦オフ、最近増えてきましたよね。
大会の醍醐味はたくさんありますが、その一つに「KP」というものがありますよね。
いわゆる「カブりポイント」、どのポケモンがこの大会で多かったのか。見ているだけで楽しいものです。
ですが運営にしてみれば集計はめちゃめちゃ面倒です。
フォームを作るのがまずかったるい。手で数えたくないし、「ランドロスれいじゅうフォルム」「霊獣ランドロス」みたいに表記ゆれされるとツールでも数えづらい。でも正式名称以外弾く設定をするのも面倒だし。

今回はそんな表記ゆれ込みの集計を行う方法としてExcelシートを作ってみました。
剣盾を主な目的としていますが、全ポケモン対応しておいたので別のゲームとかでも多分使えます。
n番煎じですし僕自身別に高い技術力があるわけではないので仕組みとしてはごく簡易なものですが、お役に立てば幸いです。
本記事は2022/8/9に執筆されています。世代で言うと、8世代、LEGENDSアルセウスポケモンまでに対応しています。

使い方

こちらからダウンロードしてください。
docs.google.com

あとはファイルの「使い方」のシートに使い方が書いてあります。
ここでも画像で乗っけておきます。

ここに書かれている通りですが、
データにはポケモン名がフルで書かれている必要があります。
また、フォルムで性能が違うポケモンについては、何かしらフォルム名を書かないとカウントされません。
例)「ウーラオス」だけだとカウントされません。「一撃ウーラオス」「ウーラオス一撃」「いちげきウーラオス」などはカウントされるようにしておきました(後述)。

デフォルト設定で各フォルムのカウントしてくれる略称↓

名前 許可略称1 許可略称2
各リージョンフォーム 「アローラ」など地方名のみ
各フォルム 「フォルム」を省いた表記
ポワルンたいようのすがた 太陽
ポワルンあまみずのすがた 雨水
ポワルンゆきぐものすがた 雪雲
デオキシスノーマルフォルム N
デオキシスアタックフォルム A
デオキシスディフェンスフォルム D
デオキシススピードフォルム S
ミノマダムくさきのミノ 草木
ミノマダムすなちのミノ 砂地
ミノマダムゴミのミノ ゴミ
ヒートロトム
スピンロトム
フロストロトム
ウォッシュロトム
カットロトム
ボルト/トルネ/ランド ロス 化身 霊獣
キュレム ブラック/ホワイト 黒/白
フーパ いましめ/ときはな 戒/解
オドリドリ 「スタイル」を省いた表記 炎/電/超/霊
ネクロズマ たそがれ/あかつき 日/月(日食・月食なども捕捉可能)
ウーラオス 「のかた」を省いた表記 一撃/連撃
バドレックス はくば/こくば 白/黒(白馬/黒馬なども捕捉可能)

また、ポワルンロトムキュレムネクロズマ、バドレックスについては、通常フォルムは「通常」と記入内容に含まれていないと感知しないようにしてあります。



この記事の以降の部分は、カスタマイズしたりしないで使う分には読まなくても問題ないと思います。

注意点

仕組みのところに詳しくは書いておくのですが、もしかするとポケモン名が重複して数えられる可能性があります。
どういうことかというと、「ギギアル」の中に「ギアル」が含まれているため、「ギギアル」だけKP1のところを「ギアル」にもKP1が入っている可能性があります。
このギアルの例を含め、なるべくこういった事態がないように修正したはずですが、もしかすると見落としがあるかもしれません。ごめんなさい。

以下のポケモンについては、重複して数えられることはないはずです。
逆に、ここのリストになくて、ポケモン名の中に別のポケモンが入っているポケモンがいた場合は、恐らく両方に数えられています。

仕組み

偉そうに語るほどすごいことやってないんですが備忘録も兼ねて。

表示する

関数でいうと↓これ

=COUNTIFS(対象データ!$A:$J,"*"&ポケモン名!$B2&"*",対象データ!$A:$J,"*"&ポケモン名!$E2&"*")+IF($F2="",0,COUNTIFS(対象データ!$A:$J,"*"&ポケモン名!$B2&"*",対象データ!$A:$J,"*"&ポケモン名!$F2&"*"))+IF($G2="",0,COUNTIFS(対象データ!$A:$J,"*"&ポケモン名!$B2&"*",対象データ!$A:$J,"*"&ポケモン名!$G2&"*"))-IF($H2="",0,COUNTIFS(対象データ!$A:$J,"*"&ポケモン名!$B2&"*",対象データ!$A:$J,"*"&ポケモン名!$H2&"*"))-IF($I2="",0,COUNTIFS(対象データ!$A:$J,"*"&ポケモン名!$B2&"*",対象データ!$A:$J,"*"&ポケモン名!$I2&"*"))-IF($J2="",0,COUNTIFS(対象データ!$A:$J,"*"&ポケモン名!$B2&"*",対象データ!$A:$J,"*"&ポケモン名!$J2&"*"))

でKPを計算して、

=VLOOKUP(B2&D2,ポケモン名!A:F,3,FALSE)

で別のシートにKPだけ出力しています。


これが計算している実際のシートです。

基本的には「『対象データ』のシートからポケモン名を探してカウントするよ」というのをやっているんですが、COUNTIFSの複数条件で、「そのポケモン名+そのフォルム名に合致するものだけ選んできてね」としています。
「"*"」のワイルドカード検索をすることでフォルム名がポケモン名の前でも後ろでも対処可能なようにしています。
フォルムの略称スロットも2つ用意していて、これに合致するものもカウントされるようにしています。
フォルム正式名称に合致するもの、略称スロットに合致するもの2つの合計として算出されます。
例)「一撃」「ウーラオス」の二つの要素を備えるセルを1カウントする。それとは別に、「いちげき」「ウーラオス」の二つの要素を備えるセルを1カウントする。

注意点として
正式名称に「いちげきのかた」、略称に「いちげき」と表記した場合「いちげきのかたウーラオス」「いちげきウーラオス」の両方を「いちげき」の方でカウントしてしまうため、「いちげきのかたウーラオス」がダブルカウントされてしまいます。これの対策として正式名称でのカウントを削っています。普通に使用する際は特に気にする必要はありませんが、項目をいじるときにはご注意ください。
一応カウントされていないところに関しては赤く塗りつぶしておきました。

ただしこのワイルドカード検索を使ったせいで、「ギギアル」の中に「ギアル」が含まれてしまうという事態が発生しました。
これを解決するために「検索除外ワード」を設定して、その設定に引っかかった分だけ引き算されるようにした、というのが後半部分になります。
「検索除外ワード」のスロットに書き込むと、「ポケモン名」と「除外ワード」の両方が含まれるセルを別に計算してくれるので、除外ワードを引き算してKPを出すという感じです。
例)「クレベース」と「ヒスイクレベース」がある場合、「クレベース」を2と数えた後、「クレベース&ヒスイ」の要素を持つセルが1つあるので、2-1で1と算出する。

例外として「アローララッタ」「ヒヒダルマ」は「ダルマモード」「ガラル」など重複する2種類の除外要素があって面倒だったので適当にきちんと数えられるように、上の基本数式とは別に処理しています。
一応この例外処理についても空白に色を塗っておきました。


ここまででKPの計算ができるようになっています。


ここからは並べ替えるためにやったことになります。
といっても複数条件のVLOOKUP関数を適用しただけです。

  • ポケモン名のシートのA列に、「ポケモン名&備考フォルムなど」の合算した項目を作っておいて

  • 計算結果シートの方にもそれぞれ引用しておいて

  • VLOOKUP関数を使いました。

以上になります。他に変なことはしてないはず。

おわりに

Excelに関しては初心者の部類なので、きちんと使える人が見たらかなり拙いというかまどろっこしいことをしているんじゃないかとも思うんですが、多めに見てもらえると助かります。
KPを集めて参加者に楽しんでもらいましょう。








この続きはcodocで購読