8/11/2017

Excel。意外と難しい、5日後の最初の月曜日は何日を求める方法【WORKDAY.INTL】

Excel。意外と難しい、5日後の最初の月曜日は何日を求める方法

<WORKDAY.INTL関数>

ちょっとした話から、
5日後の最初に来る月曜日に資料発送をしたいけど、
計算式をどうしたらいいのかな?というご質問がありました。

なんでも、5日後を求めるのは簡単だけど、
5日後の月曜日ということなので、
IF関数を使ったりして、求めているということでした。

まずは確認しましょう。

注文日が6月1日木曜日なので、
まずは5日後となると、6月6日火曜日になりますから、
そのあとに来る最初の月曜日なので、12日の月曜日というわけですね。

確かに理屈としては、簡単そうですが、ちょっと難解な匂いがしますよね。

実は、これを簡単に処理することが出来る関数があるのです。

ただし、Excel2010から登場した関数で、
WORKDAY.INTL関数】(ワークデイ・インターナショナル関数)
という関数を使用します。

では3行目に作成してみましょう。A3に2017/6/1と入力します。

B3には=A3とセル参照の数式を作成します。

当然同じ日が表示されますので、
表示形式のユーザー定義を使って曜日に変えましょう。

では、B3をクリックして、
セルの書式設定ダイアログボックスを表示しましょう。

Ctrl+1というショートカットキーを使うのがいいでしょう。

表示形式のユーザー定義の種類を、
aaaと入力すれば、表示が曜日に変わりますね。

あとはOKボタンをクリックしましょう。

ついでに中央揃えも設定しておきます。

これで、準備OKですね。

では、D3にWORKDAY.INTL関数を作っていきますので、
WORKDAY.INTL関数ダイアログボックスを表示しましょう。

開始日には、A3の5日後なので、A3+5と設定します。

日数には、1を設定します。

この日数ですが少々わかりにくいかもしれません。
どちらかというと、日数というよりも、
この場合は、『最初の』という意味でとらえるといいかもしれません。

2にすると、2番目に登場する日になります。

本来は、必要な日数を数値で指定する引数です。

週末には、"0111111"と設定します。

この"0111111"ですが、月曜日から日曜日の稼働日の意味です。

0は稼働日で1はお休みという表現をすることが出来る引数です。

そもそも、WORKDAY.INTL関数は、
「週末(曜日指定可能)と祝日を除いた日数後の日付」
を算出することが出来る関数なのです。

なので、"0111111"とすれば、
月曜日以外は全部お休みという意味になりますから、
月曜日の日付を求めることが出来るということなのです。

今回は、6月なので祭日はありませんので、祝日は飛ばしますが、
本来は、祝日は祝日表を設けておいて設定する必要があります。

それでは、OKボタンをクリックしましょう。

E3は、B3と同じ方法で作成しております。

このようにすれば、
何日後の最初の月曜日はいつ?
ということも算出することが出来きますよ。