Memory Consolidation

logを残すことに意味がある

旅行の割り勘計算を Google スプレッドシートでやってみた

Excel に飽きたので Google スプレッドシートで遊んでいるのですが、

複数人で旅行する際に、支払額の調整が出来るシートがあればいいな~と思ったので作ってみました。

本シートのセールスポイントは以下の通りです。

  • 「何に」「何円かかった」「誰の分を」「誰が払った」を書くだけ
  • データを縦にストックするので、何人でもOK
  • 飲食代など1人当たりの支払額が異なる場合も対応

f:id:rapidman:20200308123233p:plain

全体像はこんな感じ。さっそく見ていきましょう!

データ入力欄

項目やら金額やらを入力していきます。

全員で均等に割り勘する場合は、「項目」「金額」「支払」のみを入力します。

飲食代など、人によって支払額が異なる場合は、「誰の分」の列が追加されます。

昼食で、Aさんが700円、Bさんが650円、Cさんが600円、Dさんが800円のメニューを頼み、合計金額をAさんが一括で支払った場合は、以下のように4行にわたって入力します。

f:id:rapidman:20200308110743p:plain

このように入力することで、人数が増えても列を追加したりテーブルを拡張したりする必要はなくなります。

集計欄

下図の青く囲んだ部分に数式を入力します。

※「総額」は個人的に入れてるだけで無くても機能します

 f:id:rapidman:20200308122205p:plain

人数を取得

「誰の分」列に登場する人数を COUNTUNIQUE で数えています。

f:id:rapidman:20200308112407p:plain

各人が払う金額、全員で割り勘する金額をリストアップする

QUERY を用いました。

これをF4セルに書くだけでF,G列に金額のリストが出来ます。

f:id:rapidman:20200308122450p:plain

QUERY関数の中身を軽く説明します。

select ~ : ~ を表示する

group by ~ : ~列の値ごとに列を出力

"select C, sum(B) group by C" は、

"C列の値ごとに C, sum(B) を出力"という意味になります。

全員で割り勘する金額の1人当たり支払額を計算する

「誰の分」が空白、すなわち全員で割り勘する金額 25,470円を、

参加人数 4人で除します。

f:id:rapidman:20200308122544p:plain

「支払済」金額の計算

SUMIF (D列の中から, F6に一致する場合, B列の値を足していく)

=IF(F6=0, "", ~) としているのはF列に登場人物がいない場合に値を表示しないためです。とりあえず I6:I21までオートフィルしておき、16人まで対応できるようにしました。

f:id:rapidman:20200308122645p:plain

「その人が支払うべき」金額の計算

各人が支払う分全員割り勘分

f:id:rapidman:20200308122823p:plain

清算額」の計算

支払うべき金額支払い済金額

f:id:rapidman:20200308122928p:plain

ぱっと見「プラスの人が払う」というのが分かりにくいので、

条件付き書式で支払うべき金額を赤字にして目立たせます。

f:id:rapidman:20200308123134p:plain

条件付き書式は「表示形式」タブにあります。

 範囲とルール、スタイルを適用し、「完了」

完成

f:id:rapidman:20200308123233p:plain

はい完成~~~~~!

まとめ

  • QUERY構文、select C,sum(B) group by C は C列の値ごとに C, sum(B) を出力
  • スプレッドシートでも条件付き書式は出来る
  • 高速代金はETCカードを用いるため支払がその人固定になる
    高速料金担当とその他を払う担当に分けるのが吉か?