残業を減らす!Officeテクニック

Excelで納期までの残り「営業日」をカウントダウンして余裕あるタスク消化を実現!

納期までの残り営業日を自動でカウントダウンしよう

 業務では“納期管理”が大切ですよね。しかし、カレンダーを見ながら『あと何営業日?』と手計算するのは意外と手間がかかります。土日祝日を考慮して数えたり、案件ごとに期限が異なると管理が煩雑になりがちです。

本日(セルH1)から納期まであと何日?

 本日はTODAY関数で求められますが、土日祝日を除いた「営業日」が問題ですよね。このような場合に使う定番の関数は、NETWORKDAYS(ネットワークデイズ)関数、もしくは、NETWORKDAYS.INTL(ネットワークデイズ・インターナショナル)関数です。

NETWORKDAYS関数の構文。引数[開始日]と[終了日]の日数を、土日と[祭日]に指定した日付を除いて数える
NETWORKDAYS.INTL関数の構文と引数[週末]に指定できる値。引数[開始日]と[終了日]の日数を、[週末]に指定した曜日(数値)と[祭日]に指定した日付を除いて数える

 どちらの関数も、引数[祭日]には休日扱いにする日付のリストをセル範囲で指定します。省略した場合、NETWORKDAYS関数では土日、NETWORKDAYS.INTL関数では、[週末]の値に対応する曜日が除外されます。「1」(または省略)を指定した場合は土日が除外されて、NETWORKDAYS関数と同じ結果になります。

 今回は、NETWORKDAYS関数を使って、納期までの土日を除いた残りの営業日をカウントダウンする表を作ってみます。祝日は考慮しません。

MAX関数でマイナスの値を処理する

 残りの営業日を求める数式はシンプルです。今回のサンプルでは、セルH1にTODAY関数が入力されているものとして参照します。祝日は無視して土日以外を営業日とするので、セルD2の数式は以下のようになります。

=NETWORKDAYS($H$1, C2)

 上記の数式を入力した結果は以下の通りです。

セルD2に「=NETWORKDAYS($H$1, C2)」と入力した結果

 一見、問題ありませんが、納期を過ぎると結果はマイナスになります。何日遅れなのかを確認するには役立ちますが、MAX関数を利用して納期遅れは「0」としてしまいましょう。MAX関数は、指定した引数の中から最大値を求めます。引数に「0」を含めれば、マイナスの値は最大値にはならずに「0」が表示されます。

=MAX(0, NETWORKDAYS($H$1, C2))
セルD2に「=MAX(0, NETWORKDAYS($H$1, C2))」と入力した結果
数式をコピーすれば、それぞれの納期までの日数が求められる
試しに納期を変更すると、納期過ぎは「0」となる

IFS関数でステータスを表示する

 残りの営業日に応じたステータスを表示してみましょう。7日以内なら「至急」、10日以内なら「要注意」といった具合です。IFS関数を利用します。

=IFS(D2=0,"期限切れ",D2<=7,"至急",D2<=10,"要注意",TRUE,"余裕あり")

 条件は厳しい順に指定します。最後の「TRUE」は「それ以外」を意味します。つまり、11日以上の余裕がある場合は「余裕あり」と表示します。納期を変えて動作も確認しておきましょう。

セルE2に「=IFS(D2=0,"期限切れ",D2<=7,"至急",D2<=10,"要注意",TRUE,"余裕あり")」と入力して、数式をコピーした状態。他のステータスも確認しておこう
セルC2とC3の日付を変更した。7日以下は「至急」、納期過ぎは「期限切れ」と表示される

 カウントダウンが必要なシーンは多いのではないでしょうか。簡単な数式で実装できるので、既存の表に組み込んでもいいですね。地味だけど効くテクニックとして活用してみてください。