F

2017/03/29

デレステSSR早見表バージョンアップです

デレステSSR早見表
昨日のSSR早見表にアイドル検索機能を付けてみました。
まあまあ便利だと思います。(便利って言え。)
ダウンロードはこちらから→
(Excel2016で作ってるのでそれ以外のバージョンだとレイアウト崩れるかもしれません^^^;)

以下自分用メモも兼ねて仕組み解説です。デレステ SSR 早見表
概要:
アイドル名と特技をセルに入力すると、SSR早見表データからそのアイドルを検索してきて、そのアイドルのステータスを表示してくれる機能を追加。
とりあえず5人を試しに並べてみたい時に使えそう。簡易編成シミュレーション的な感じ。
主に秒数被りの確認に使うことになると思います。

使った関数:
・INDEX()
→検索時に使う。ググって出てきたのをコピペしたので詳しいことは知りません。
・MATCH()
→同じく検索時に使う。INDEX関数と組み合わせて使うらしい。これもググって(ry
・CONCATENATE()
→後述する文字列結合で必要になる。セルA1とセルA2に書かれてる文字を合体できる。

初めは使ってたけど不採用となった関数:
・VLOOKUP()
→INDEX,MATCH関数に比べ自由度で劣ることに気付いたので使わないことにしました。

工夫点など:
「ある値を1つだけ入力したら、その隣に予め用意しておいた値を表示する」というのは、容易に行えます。Excelの入門書なんかにも載っている典型例です。

しかし今回の場合、アイドル名がユニークでない(例えば「島村卯月」だけでは判定強化なのかコンボナなのかが識別できない)ため、1つの値(アイドル名)だけではデータの検索ができないのです。
1人のアイドルを検索する場合は複数条件の用意が必須でした。

「IDで識別できるからじゃあID入力させればいいじゃん」とはいきません。利便性が死にますので。(判定しぶりんは確かID002番だから002を入力するゾ!とはならない。)
したがって、アイドル名+特技の種類を入力させることでアイドルの特定をすることにしました。
(後にウサミン他が2種類ともコンボナだったことに気付くのですが、これはコンボボーナスとコンボボーナスF(フェス限の意)とすることで対応しました。)

さて、方針としては、
「アイドル名と特技を入力したら、それに対応するステータス(スキル秒数、ボーカル値、ダンス値など)を検索して表示してくれる仕組みをつくる」
という形で固まりました。

はたしてそんなことできるのか。
実はExcelは、(というかVLOOKUP関数のような検索系関数では)そういった操作は想定していません。
なので、何かしら工夫する必要がありました。

で、「VLOOKUP 複数条件 入力」とかでググってたらいろいろと有益な情報が見つかりました。
結論から書くと、2つのセルに入力された値を別のセルで文字列結合し(同時に検索される側のデータでも予め文字列結合をしておく)、その結合された文字列を参照して検索させることで、当問題が解決します。

以下にテーブルイメージを用意しました。(見栄えが悪くなるため、結合用列は通常非表示にします。)
結合用列を予め用意しておくことで、擬似的に複数条件検索が可能となります。
列1列2 列3 結合用 
おにぎり激レアこんぶおにぎり激レア
おにぎりレアうめおにぎりレア

結果を表示させるにあたり、入力欄には「おにぎり」「激レア」と入れて検索するのですが、内部的には「おにぎり」と「激レア」を探しているのではなく、予め用意しておいた「おにぎり激レア」という1つの値を探しています。
こういうことを思いつく人は凄いと思いました。

その他、入力されたアイドルによってセル背景色を変えたり、入力エラーのアレ(#N/A)を出さないようにするなど、細かなアレコレも盛り込んでみました。
色々動かしてみて大丈夫そうだったのでおそらく不具合はないはず……。
デレステやってる人もそうでない人もよかったら落としてみてください~。

0 件のコメント:

コメントを投稿