【重要】2022年までの投稿について

2022年までの投稿について 1年半ぶりの更新です。 更新とはいっても、新しく提供できる情報がほとんどありません。 強いていえば、元気です。というか元気になりました(後述)。 本題です。 2022年2月2日までに投稿した全記事について、情報が古くなっていますが、 今のところ 情報の修正・更新の予定がありません 。 この1年、主に生活環境の大きな変化でメンタルがやられてしまって休養をとり、 最近になって少しずつ精神状態が安定してきました。 しかしながら、この1年の間に趣味や興味がガラリと変わってしまい、 今まで触れてきたコンテンツに関する新しい情報を調べる時間も気力もなくなってしまいました。 (あと、純粋にブログの書き方やHTMLの使い方、サーチコンソールの設定等を完全に忘れているのもあります) 今までの記事について、 記事の内容が古くなった旨の注意書きを冒頭に追加する ことで、対処とさせていただきます。 ただ、あまりにも情報が古いと判断した場合は、記事を非公開にするかもしれません。 固定ページ( about など)については、古くなっている情報を更新しておきます。 また、この記事をブログの上部に固定する方法がわかれば、それもやっておく予定です。 ご迷惑をおかけして申し訳ありませんが、ご理解のほどよろしくお願いいたします。

【関数編】ゲームデータの整理ついでにExcelに触れる

【重要】(2023/08/15追記)
この記事の情報は古く、かつ、修正の予定がありません。予めご了承ください。
2022年2月以前の記事に関する詳細はこちらをご覧ください。


背景

私は、刀剣乱舞を遊びながら、さまざまなデータを記録しています。
(とはいえ、2019年秋就任なので、そこまで大量にデータが集まっているわけでもありませんが)
集めたデータは、攻略に利用するとかでもなく、ただただ、にやにやしながら眺める程度にしか使わないため、正直持て余してはいるのですが、
それでもやっぱり、ステータスの差や顕現した日付などを基に、刀剣男士の個性や本丸の軌跡を想像すると楽しいものです。

ところで、集めているデータには、
  • 初入手、特や極へのランクアップ、カンストなどを達成した日付
  • 刀剣男士のステータス値
  • 受取箱で受け取ったもの(就任後1ヶ月半は除く)
  • 鍛刀やイベントで入手した刀剣、楽器等(最近はサボり気味)
などがあるのですが、これらをExcelで管理しています。
そんな中で、「これ使ってみたらけっこう便利だった」「この機能なんか楽しい」と、個人的に感じた、Excelの関数や機能をいくつか紹介します。ついでに、刀剣乱舞(ゲーム)の話も少し添えたいと思います。

私自身はExcelマスターでも何でもなく、まあ私が分かればいいや程度のスタンスのため、
もっとスマートな機能あるわとか、こんな機能無意味じゃんとか思われるかもしれませんが、まあ大目に見てください。
だいたい推しが絡めば楽しく感じるんだもの、仕方ないじゃないか。

長くなりそうなので、記事2本程度に分け、今回は「関数編」とします。
ここで言う「関数」は、セル内に直接書き込むものとします。

平均、分散、偏差値などを計算する

例えば、次のようなデータがあるとします。
  A B C
1 名前     刀種   打撃 
2 三日月宗近 太刀 72
3 小狐丸 太刀 68
4 石切丸 大太刀 85
5 岩融 薙刀 68
6 今剣 短刀 26
7 童子切安綱 太刀 不明

このデータを用いて、関数の使い方を述べていきます。
表計算ソフトなだけあって、関数周りは充実しています。平均や分散、最大値・最小値くらいなら、専用の関数でパパッと計算できてしまいます。
また、条件分岐に対応しているものもあります。
データ整理で私が使用しているのは、以下のものくらいでしょうか。

MAX/MIN

  • 効果:括弧内に指定した値/範囲のうち、最大値/最小値を返す
例えば、=MAX(1,4,7) のように記述すると、最大値7を返します。
また、=MIN(A1:B5)のように、セルで指定することもできます。
上のデータを例に取ると、=MAX(C2:C6) は、範囲C2からC6までのうち、最大値である85を返します。

MAXIFS/MINIFS

  • 効果:条件を満たすセルに対してMAX/MINを適用
MAXIFSを例に取ると、引数は =MAXIFS(範囲, 条件適用範囲1, 条件1, [条件適用範囲2, 条件2], ...) のようになります(太字は必須)。
このとき、
  1. 条件適用範囲1の中で、条件1を満たすセルのみが選択され、
  2. その中から、条件適用範囲nの中で、条件nを満たすセルのみが選択され(n≧2)、
  3. 選択されたセルと対応する範囲(引数1)の中から、最大値を出力します。
例えば、=MAXIFS(C2:C6,B2:B6,"太刀") とすると、
  1. 範囲B2:B6の中で、値が 太刀 であるセル(B2, B3)のみが選択され、
  2. 選択されたセル(B2, B3)と対応する範囲C2:C6内のセル(すなわち、C2, C3)の、最大値72を出力します。
条件で与える値は、"太刀"のような文字列や、">70"のような判定式、セルなどを与えることが可能です。便利。
また、詳しくは触れませんが、ワイルドカードが使えたりします。例えば、"*太刀"とすると、「太刀で終わる文字列」が検索条件となり、「大太刀」も含まれることになります。

AVERAGE/AVERAGEIF

  • 効果:括弧内に指定した値/範囲の平均値を返す(AVERAGE)
  • 効果:条件を満たすセルの平均値を返す(AVERAGEIF)
例えば、=AVERAGE(C2:C6) =63.8となります。
AVERAGEIFの引数は、=AVERAGEIF(条件範囲, 条件, 範囲) のようになります(太字は必須)。引数3を省略した場合、引数3は条件範囲(引数1)が適用されます
例えば、=AVERAGEIF(B2:B6,"太刀",C2:C6)とすると、
  1. 範囲B2:B6の中で、値が 太刀 であるセル(B2, B3)のみが選択され、
  2. 選択されたセル(B2, B3)と対応する範囲C2:C6内のセル(すなわち、C2, C3)の、平均値70.0を出力します。
MAXIFS/MINIFSと、引数で指定するものの順番が少し異なるので、注意しましょう。

VAR.P/VAR.S

  • 効果:括弧内に指定した値/範囲の標本分散を返す(VAR.P)
  • 効果:括弧内に指定した値/範囲の不偏分散を返す(VAR.S)
Excelで分散や標準偏差を求める関数は、指定している範囲が、母集団全体なのか、あるいはその標本なのかで分かれています
指定している範囲が、母集団全体であればVAR.P、標本であり、母集団での分散を推定したい場合はVAR.Sを使用します。 
データ数(指定した範囲)が少ない場合は、VAR.Sを用いるほうが適切でしょう
(私自身は、「実装済みの刀剣男士が世界の全て(母集団)である」とみなして、データ数が20程度であってもVAR.P/STDEV.Pを使用してしまっていますが、本来こういう考え方はよろしくないと思われます)
例えば、=VAR.P(C2:C6) =396.16、=VAR.S(C2:C6) =495.2 のように、データ数が少ないとけっこう変わってきます。

STDEV.P/STDEV.S

  • 効果:括弧内に指定した値/範囲の標準偏差を返す
標準偏差は、分散の正の平方根で求められますが、専用の関数が存在しています。
両者の違いは、分散と同様、指定した範囲が母集団全体か標本かの差です。
例えば、=STDEV.P(C2:C6) =19.9、=STDEV.S(C2:C6) =22.3となります。

また、これらを組み合わせて、いわゆる偏差値も計算できます。
偏差値は以下の式で計算できます。
\[ {\sf 偏差値} = \frac{{\sf 自身の値} - {\sf 平均値}}{{\sf 標準偏差}}*{\sf 10}+{\sf 50} \] 例えば、上の5振(今剣まで)を母集団として、三日月宗近の打撃の偏差値を求めると、 \begin{eqnarray} {\sf 偏差値} &=& \frac{{\sf 72} - {\sf AVERAGE(C2:C6)}}{{\sf STDEV.P(C2:C6)}}*{\sf 10}+{\sf 50} \\ \\ &=& {\sf 54.1} \end{eqnarray} と計算できます。

その他の楽しい機能

RANK

  • 効果:括弧内の範囲での、自身の順位を返す
引数1に順位を求める値、引数2に範囲を与えます。いわゆるランキングですね。
引数3は省略可能ですが、昇順・降順を指定できます。
例えば、今剣までの5振の中で、三日月宗近の打撃の順位は、=RANK(C2,C2:C6) =2となり、2番目に高いことがわかります。

COUNT/COUNTIF

  • 効果:指定範囲内の、数値を含むセルの個数を返す(COUNT)
  • 効果:指定範囲内の、条件を満たすセルの中で、数値を含むセルの個数を返す(COUNTIF)
読んで字のごとく、セルの個数をカウントします。
注意点として、セル内の数値は関係ありません。また、数値で表せない文字列を含むセルはカウントされません
例えば、=COUNT(C2:C7) =5、=COUNT(B2:B7) =0となります。
COUNTIFでは、引数1で条件を適用させる範囲を、引数2で条件を与えます。 例えば、=COUNTIF(B2:B7,"太刀") =3となります。条件は文字列も使用可能です。
大量に鍛刀した際の該当刀剣男士の入手数や、受取箱から受け取ったものの個数をカウントするときに使用しています。とっても便利。

IFERROR

  • 効果:指定した計算式でエラーが出た場合、ある値を返す
これは今まで挙げた関数とは異なり、エラーが出た際の処理を設定するものです。
引数1で指定した計算式でエラーが出た場合、引数2の値を返します
エラーが出なかった場合は、もちろん、指定した計算式での計算結果を返します。

例えば、値を0で割っている、数値のみを指定するべきところを文字列にしているときなどに、計算エラーとなります。
範囲を指定して計算するとき、範囲内に1箇所でもエラーを吐いているセルがあると全く計算できなくなるなど、まあまあ厄介です。
「この範囲内でエラーが出た時は、とりあえずこの値を出力したい」なんて時に、役立つかもしれません。
例えば、上の例で、童子切安綱の打撃の偏差値をそのまま求めようとすると、C7は"不明"(文字列)のため、 \begin{eqnarray} {\sf 偏差値} &=& \frac{{\sf C7} - {\sf AVERAGE(C2:C7)}}{{\sf STDEV.P(C2:C7)}}*{\sf 10}+{\sf 50} \\ \\ &=& {\sf #VALUE!} \end{eqnarray} となります。一方で、IFERRORを用いて「エラーが出たら50を返す」とする、すなわち、 \[ {\sf IFERROR(}\frac{{\sf C7} - {\sf AVERAGE(C2:C7)}}{{\sf STDEV.P(C2:C7)}}*{\sf 10}+{\sf 50}{\sf , 50)} \] とすると、この式は50を返すようになります。
後でC7を更新(数値を入力)すれば、ちゃんと偏差値が出力されるようになります。

データを眺めてにやにやする程度なら、だいたいこれくらい使えれば十分なのではないでしょうか。

「機能編」も書きました

余談

私の好きな打刀男士勢は、その見た目や性格などから「個性の闇鍋」などと呼ばれることもあるようですが、
多くのパラメータで、分散が他の刀種と比べて大きく(特に、無印/特に顕著)、ステータスもだいぶ個性的なようです。
主な原因は、レア2/3で、ステータス値の配分が全然違うからなんですけどね。
全体から見たステ値配分として、打刀男士はバランス型なのですが、
刀装次第で統率・機動・遠戦特化にできますし、
たまに素で短刀並の機動や太刀並の打撃・統率などを持つ男士がいたりするので、見ていて面白いんですよね。

コメント

このブログの人気の投稿

【刀剣乱舞】レベル・機動値差があっても行動順をなんとなく把握したい

(解決済)MacでSnap Cameraアプリのアンインストールに少し苦戦した話

【機能編】ゲームデータの整理ついでにExcelに触れる