web開票速報を管理する(スプレッドシート)
久々の投稿です。
いや、代表権のゴタゴタがあると、やはりあれこれ選挙を見越して作業するモチベは上がらないのが正直なところで…今はマッピング更新は敢えてお休み中。加工依頼が来たらやるかなって程度です。
愚痴(笑)はさておき、本題に。
選挙があると、開票速報を自治体が発表するわけですが、あれって最終結果が出るまでは届け出順の管理。つまりざっくりした状況が一目ではわからない。
つまり、下記のような表が欲しいと。
○得票数順に上から並んでいる
○その時点の暫定順位、当落線上のどこにいるかが一目でわかる
○結果を共有しやすい
得票数については言うまでもないですね。多い人が誰かわかるほうがいい。
暫定順位については、組織票で固めている党の場合、どこの地区の票が開くかで大きく情勢が変わるので、ここに一喜一憂するのも微妙な部分もありますが、目安としてはやはり欲しいところです。
結果の共有は今だとGoogleスプレッドシートが簡単かなと。アドレス教えて、うまくいけばそれだけで終了だし。
ただ、これについては選管の速報の上げ方によるんですよね。最近だと厚木市議選は式修正1回もなしで最後まで閲覧できました、一方柏市議選は毎回式を書き換える羽目に。そうなると30分置きに手を入れないといけなくて、完全放置で他の事に専念は無理です(笑)。アーカイブとして途中経過を見たいのであれば式の書き換え(=履歴が残る)で対応できるほうがいいのかもですが、最終的には結果のページ以外は一定期間で削除になるケースが多い(というか、ほぼそうなんじゃないかって気が)ので、書き換えさせるなーって気はしますけどね。
というわけで、今回はGoogleスプレッドシートを使って開票速報を加工しようってテーマです。
大前提として、表形式でwebにアップされていること
jpegなどの画像形式の場合は諦めて手入力しましょう( ノД`)シクシク…Googleレンズなどの画像から表データを読み取るアプリで対応するのも手ですが、50人くらいなら手入力のほうが速そう。
PDFの場合は運がよければ手元にダウンロード、変換後Excelで対応できますが、スプレッドシートではできるのかどうかわかりません。勉強不足でごめんなさい。
手順はこちら。
1)webから表をスプレッドシートに引き込む
スプレッドシートの表の左上を置きたい部分に、下記の式を入れます。
=IMPORTHTML("【表のあるHPのURL】","table",【URL内で情報を取りたい表の配置順(数字)】)
配置順というのは、例えばHPの構成が上から
・当日投票率の表
・開票速報の表
となっていた場合、開票速報のデータが欲しいなら入れる数字は2になります。開票速報のみで構成されているのであれば、入れるのは1。
先日の柏市議選、開票日深夜1時現在の表を引っ張ってくる式を入れるとこうなります。F、G列はこちらで加工して表示させていますが、説明は後述。ここではスルーしてください(訳:最初からマニュアル作り直すのがめんどくさい(/ω\))。
2023.8.11現在表のあるURLはこちら。一定期間で最終結果以外は削除される可能性が高いので、リンク切れの際はご容赦を。
なお、この例のように30分ごとの結果を別URLで表示する場合は、式のURLを書き換えれば更新されます。同じURLを差し替えるタイプの自治体であれば、あとは30分おきにぽちっと更新するのみです。
2)得票順、暫定当落の欄を作る
上の例ですが、引き込んだ元の表は5列で、6列目に得票順、7列目に暫定当落の欄を作っています。
柏市議選2023は候補者50人(見出し入れると表は51行で構成)、定数36
届け出順1番、つまり2行目の方の式はこちら
○得票順 指定した範囲、ここでは得票数の順位を表示
=RANK(E2,$E$2:$E$51)
○暫定当落 得票順37未満(つまり36以下)は○を付ける
=IF(F2<37,"○"," ")
こちらを50人分コピペで、順位と当落を表示。得票数の範囲指定は動かせないので、セル番地の頭に$を付けて固定。参照する数字は各候補者のものになるので、こちらはコピペで行を動かす&列は動かすと表の体をなさないので動かさない前提の式です。
3)得票順に並べて表示する
Excelのパワークエリを利用した場合は、データを引き込んで閲覧したい順番にソートをかければ、更新したときもその順番でソートしてくれるのですが、スプレッドシートはどうやらそれはできない模様。
見たい順番に表示する場所を別途設定する必要があります。
今回は得票順の表をメインで共有したいので、左側に新しいシートを作って表の左上を置きたい部分に、下記の式を入れます。
=SORT('【1の工程でデータを引き込んだシート名】'!【表の範囲】,【並べ替えの基準にしたい列番】,FALSE)
最後のFALSEは大きい数から並べるためです。
上の式を例に取ると
=SORT('シート1'!A1:G51,5,FALSE)
※得票順列を使って、下記でも結果は同じになります。
=SORT('シート1'!A1:G51,6,TRUE)
入れるとこんな感じに。
なお、表示形式→交互の背景色で、簡単にメリハリのついた表を作れます。
なお、一番左のシートが起動時に表示される仕様なので、メインで共有するシート、この場合はソートで打ち出したほうのシートを一番左に配置します。
4)情報を特に知りたい方を目立たせる
こちらは表示形式→条件付き書式で設定。
例えば自民党の候補者全員の列を目立つ色にするには、下記の通り設定。
○範囲はリストの見出し以外全部
○カスタム書式
○党派は「自由民主党」を目立たせたい→言い換えればC列セルに自由民主党と入っている場合に色を変えたいので、条件は
=$C2="自由民主党"
この場合、スプレッドシートのルールで、適用したい一番上の行のセル番地を入れて設定すると、範囲内全てこの条件が適用されます。あとは設定したい書式を選ぶだけです。ここでは列全体が黄色になるように指定。
これで完成です。
もっと作りこむなら、IF式もうひとつ増やして次点も表示させるか、当落の背景色を変える条件を入れることもできると思いますが、個人的にはそこまでは必要ないかなと。あまり複雑になると逆に見づらいし。
おまけ
実はこちらの柏市議選開票速報、あれこれExcelやスプレッドシートを試していたらそれにはまってしまい、結局共有せずに終了しました(笑)。
次の選挙からはきちんと共有できるように事前準備をしておくかな…。
なお、最後(4)のサンプルが自民党なのは、単に複数の条件設定が簡単にできますよというのを表示したかったためで、何故サンプルを支持政党にしないのさってクレームはご勘弁を。仕切り直して複数候補出せる体力を回復できればいいなと願っております。