JetB株式会社

Googleスプレッドシートで-〇日とマイナスの日数を出したい場合の備忘録

Googleスプレッドシートで-〇日と日数を出したい場合の方法について

例えばGoogleスプレッドシートで案件や抱えている作業のスケジュールを管理しようと思った際、-〇日(例: -3日)といった感じで、約束の期日まで後何日かだけでなく「既に何日マイナスになってしまっているか?」というのを分かり易く表示させたい、といったことはないでしょうか?

例えばこんな感じで⇩

ネットで関数などの情報を探して見たのですが「まさにこれだ!」という情報が無かったため、かなり強引な書き方かも知れませんが、今回そのように機能する記述を考えてみました。

もしも同じような悩みを持っている方にとって、一つの参考になればと思い記事にしてみましたので、宜しければご覧ください。

マイナスの標示付きで日数を出すための記述

例えばBの列の2行目に期日が入っていて、その隣のC列の2行目に、マイナス付きでその期日から換算した日数を出すとした場合、 C2に

=IF(B2<TODAY(),"-"&TODAY()-B2&"日",B2-TODAY()&"日")

といった感じの記述を書いてみました。

基本的な考え方

IFを使い、まずは基準となる日付に対して TODAY() で取得した今日の日付と比較して

=IF(B2<TODAY(), 

 ↑ もしもB2に入力のある日付が今日よりも小さい(つまり過去)だった場合

"-"&TODAY()-B2&"日", 

 ↑ 今日からB2に入力のある日付を引いた数の前後に「-」 と「日」を付ける。

B2-TODAY()&"日") 

 ↑ そうでなかった場合、B2に入力のある日付から今日を引いた数に「日」を付ける。 

といった感じで、かなり強引な記述ですが、TODAY()を軸にして出した数値に 「-」や「日」を””でくくり組み合わせて表示をさせました。

きっともっと綺麗な記述があるのではないかと思いますが、機能のことだけであれば多分これで解決するのではないでしょうか。

マイナスだけでなくプラスも付けるとなると、、

1-1で触れた基本的な考え方の記述では、マイナスかそれ以外か?だけを判断材料にしています。

もしこれにプラスも付けたいとなると、当日(つまり「0日」)との区別をする必要も出てくるため、ちょっと何かしら書き加える必要が出てきます。

アナログな考え方ですが、例えばIFSを使い3つの条件を付けて

=IFS(B2<TODAY(),"-"&TODAY()-B2&"日",B2>TODAY(),"+"&B2-TODAY()&"日",B2=TODAY(),"0日")

といった記述とかで解決するかもしれません。

こんな感じですね。

ちょっとした工夫で分かり易く、使いやすく

例えばプラスマイナスやある一定の日数に対して色を付けるであったり、一つ一つのセルに式を書くのではなく自動的にCの列に計算結果が反映できるようになっていたりすると、実際の運用をするうえでは分かり易くて使いやすいシートになるのではないかと思います。

色分けで分かり易くする

これはスプレッドシートやエクセルを使っている人であれば、わざわざ書かなくても良いレベルの内容になるかと思いますが、C2(計算後の日数)のセルに、条件付き書式の「次を含むテキスト」で「-」を指定して既に過ぎてしまっている日付に赤く色を付けたり、「完全一致するテキスト」で「3日」を指定して別の色を付け、残日数が近づいていることなどを分かり易くしてあげるのも良いのではないかと思います。

ARRAYFORMULAの有効活用

エクセルにはない、Googleスプレッドシートならではの神関数「ARRAYFORMULA」 使ったことのある人であれば、これも説明の必要はないはずですが、たった一つのセルに記述をしただけで、その列全てに自動で記述を当ててくれるまさに夢のような関数です。

「ARRAYFORMULA」の具体的な使い方などは、ひとまずネットに良い情報があるのでグーグルで検索をしていただくとしまして、、

今回の記述を例にするのであれば  

=ARRAYFORMULA(IF(B2:B<TODAY(),"-"&TODAY()-B:B2&"日",B:B2-TODAY()&"日")

だとか

=ARRAYFORMULA(IFS(B2:B<TODAY(),"-"&TODAY()-B2:B&"日",B2:B>TODAY(),"+"&B2:B-TODAY()&"日",B2:B=TODAY(),"0日"))

といった感じでちょこっと記述を加えるだけでC列全てに隣のBのセルの日付に対して計算した日数を自動で出してくれます。 

ただし要注意なのが下記画像のように、「ARRAYFORMULA」を使う場合、良くも悪くも列全部を指定すると、下までずっと計算を出してくれるため、A列に日付がなくてもB列に値が入ってしまいますので、実際の運用を考えると、さらに工夫が必要になってきます。

実際の運用を考えた場合

実際の運用の際は、A列などに案件名や作業名などが入ることが想定されますし、ずっと下まで永遠に案件名などが入っているわけもないはずです。

ですのでこれも例ですが

=ARRAYFORMULA(IF(B2:B="","",(IF(B2:B<TODAY(),"-"&TODAY()-B2:B&"日",B2:B-TODAY()&"日"))))

といった感じで、もしもB列に値がないならばC列も空欄にするようにしておくと良いのではないでしょうか。

実際にはこんな感じですっきりとします。

まとめ

今回は表題にもある通り「Googleスプレッドシートで-〇日と日数を出したい場合の方法について」の一つの具体的な方法と、それに関してのちょっとした補足事項を纏めてみましたが、いかがでしたでしょうか? もっともっと良い記述や関数の使い方があるのではないかと思いますので、ぜひ自分なりの表現を求めて色々と試して頂くきっかけになればと思います。

また弊社は基本的にはWordpressをベースにしたWEBサイト制作をメインにしておりますが、普段はGoogleスプレッドシートを利用して、情報を纏めたシートを作り「IMPORTRANGE」を使い取得したい情報だけを読み込んだり、「QUERY」などを使い、組み合わせることで管理しやすいシートを作って情報の管理をしておりますので、もしかしたらそのような部分でお困りの方のお役に立てることもあるかもしれません。

「Wordpressベースの自社管理しやすいホームページが欲しい!」「見た目の良い感じのホームぺージが作りたい!」「反響の出せるホームページに作り直したい!」といったご要望だけでなく「Googleスプレッドシートで効率的なシートを作りたい!?」といったことなど、もしご興味ある場合はまずは一度お気軽にご相談ください。