( ノ゚Д゚)こんばんは!こんにちは!おやすみなさい!おはようございます! とっちーです。
今回は、「WORKDAY.INTL関数」機能を使って「月数計算」を簡単に設定できる方法をお伝えしてみます。
2010以降のエクセルをお持ちなら、せっかくの関数です。長い組合せの式は今日からやめてみましょう。
新しいことにチャレンジするって素晴らしいと思います。


Contents
休みの日を除いた日数を計算する関数
バージョン2010以降のExcelを使っている方は、ぜひ使ってみましょう。
とても便利です。
WORKDAY.INTL関数
指定した休日を日数に含まずに、予定日を求めることが可能です。
それが、「WORKDAY.INTL」ワークディ・インターナショナルという関数ですね。

使用方法は、特に引数の設定を誤らなければ大丈夫です。
書式 | =WORKDAY.INTL(開始日,日数,週末,祭日) |
➊開始日 | 日付(シリアル値)もしくは計算されたシリアル値か文字列 |
➋日数 | -を含む整数値 |
➌週末 | 定数で決まった引数か””で囲まれた7桁の0と1の組合せ ”1111111”は不可 |
➍祭日 | 該当するセル・セル範囲・もしくは名前の定義などの「配列指定」 |
➊開始日は、日数を数えたい起算日に当たります。必ず西暦から入力を行いましょう。
➋日数は、発送準備日数や仕込み日数など必要な日数を設定できます。
引数:週末の設定方法
引数、週末の設定方法は二通りあります。
一つ目は、引数の定数で決まった値1~7と11~17になります。
二つ目
は、0と1を使用して7桁の組合せで設定します。7桁の並びは「月火水木金土日」に当たります。
仕事日(営業日)は0、休日(休み)は1を指定します。

上図が、引数の定数の設定一覧になります。
引数 | 文字列指定 | 週末(休日) | 引数 | 文字列指定 | 週末(休日) |
1 | ”0000011” | 土曜日・日曜日 | 11 | ”0000001” | 日曜日 |
2 | ”1000001” | 日曜日・月曜日 | 12 | ”1000000” | 月曜日 |
3 | ”1100000” | 月曜日・火曜日 | 13 | ”0100000” | 火曜日 |
4 | ”0110000” | 火曜日・水曜日 | 14 | ”0010000” | 水曜日 |
5 | ”0011000” | 水曜日・木曜日 | 15 | ”0001000” | 木曜日 |
6 | ”0001100” | 木曜日・金曜日 | 16 | ”0000100” | 金曜日 |
7 | ”0000110” | 金曜日・土曜日 | 17 | ”0000010” | 土曜日 |
ユーザー設定で文字列を設定すれば、飛び石も設定可能です。
月・水・金が休みの場合は”1010100”
火・木・土が休みの場合は”0101010”
全て仕事日(営業日)の場合は”0000000”などの設定ができます。
ただし、すべて休日(休み)の”1111111”は設定できません。エラー値を戻してきます。


引数:祭日の設定方法
お休みは、日曜日とその他の平日だけでなくお正月や子供の日みたいに祝日もあります。
お仕事の種類によっては休みだったり、仕事だったりしますが最初にリストを作成して「配列指定」を作成しておけば簡単に設定できますよ。

上図は2019年の祝日一覧とどこかの会社の6月までのお休みの一覧ですね。
祭日の設定方法には、3つあります。
1.作成した一覧の日付の入力されているセルを選択する。

2.作成した日付の入力されているセルを範囲指定して選択する。

そして、3つ目。
3.名前の定義(配列指定)を作成したものを使用する。
名前の定義で、独自の休日日を作成しておけば大連休のカウントも可能になるんです。

上図のように暦の祝日と振替日以外の平日を休日指定に設定しておくだけなんですね。
べんりだなぁ~
ちなみに「WORKDAY.INTL関数」の使用方法は「最後の説」になります。




名前の定義でリストを作成する


名前の定義は、リストの内容を後から追加も削除も修正も操作できるのでお勧めです。




作成したリストの➋項目を含んだ日付の欄と最終行に空白1行足した箇所を➌範囲選択します。 1行足すのは、後で修正を簡単にするためです。
次にリボンもしくはメニューバーの「数式」タブの中から「選択範囲からを作成」をマウスで選択(左クリック)します。
「選択範囲から名前を作成」ダイアログが表示されます。
表示されているメニューの中の➏「上端行」だけを☑して➐「OK」を選択します。これで選択範囲していた箇所の「名前の定義」(配列指定)が完成しました。
こんな感じでいくつか作成しておくと、式の中で「名前の定義」を使用した時に「名前の定義」を変更するだけ指定変更ができるから便利です。


セルで「名前の定義」を使用する
名前の定義は、セルに設定できます。

設定方法は➊指定したいセルを選択(左クリック)します。次に➋データタブを選択して➌データの入力規則を選択します。
表示されたメニューの中の➍「データの入力規則」を選択(左クリック)すると「データの入力規則」ダイアログが表示されます。
➎設定タブ内に入力の種類がありますので➏プルダウンを選択してメニューの中から➐リストを選択します。
表示が変わり、元の値の入力を求められますので、キーボードの➒「F3」を押しましょう。「名前の貼り付け」ダイアログから設定したい➓名前の定義を選択(左クリック)して⓫「OK」を選択します。
「データの入力規則」ダイアログに戻りますので元の値の入力欄に表示された「名前の定義リスト」が、あっているか⓬確認してから⓭「OK」を選択しましょう。
これで⓮セルで上記で選択した「名前の定義リスト」が使用できるようになります。
数式で「名前の定義」を使用する
数式の中に「名前の定義」を使用することが出来ます。

数式バーで記述していく数式に「名前の定義リスト」を設定する場合は、設定する➊位置が来た時に➋キーボードの「F3」キーを押します。
「名前の貼り付け」ダイアログから設定したい➌名前の定義を選択(左クリック)して➍「OK」を選択します。
数式バーに➎「名前の定義リスト」の名前が表示されます。これで設定が出来ました。
もう一つの方法は、「関数の引数」ダイアログに設定をする方法になります。
関数の引数ダイアログで「名前の定義」を使用する
関数の引数ダイアログで作成する場合になります。

➊設定したいセルを選択(左クリック)した後、数式バーにある➋「関数の挿入」コマンドを選択(左クリック)すると「関数の挿入」ダイアログが表示されます。
使用する関数を➌や➍で使用する関数を選択して➎「OK」を選択します。今回は、WORKDAY.INTL関数を選択してみました。➏関数の引数のWORKDAY.INTLの値の入力ダイアログが表示されます。
それぞれの項目に➐式や参照セル、値を入力していき➑「名前の定義リスト」を使用する入力欄でキーボードの➒「F3」キーを押します。
➓「名前の貼り付け」ダイアログから設定したい⓫名前の定義を選択(左クリック)して⓬「OK」を選択します。
「関数の引数」ダイアログに戻りますので元の値の入力欄に表示された「名前の定義リスト」が、あっているか⓭確認してから⓮「OK」を選択しましょう。
数式バーに「名前の定義リスト」を含んだ式が表示されていたら出来上がりです。
整数値を日付に見せかける
日付ではなくて整数値で「入力」とか「計算」を行いたいときに設定してみましょう。使い方次第ですがとても便利です。

日付表示をさせたい➊整数値を入力した箇所を➋選択範囲します。➌マウスの右クリックをしてメニューを表示させてください。
メニューの中の➍セルの書式設定を選択すると➎セルの書式設定ダイアログが表示されます。表示形式タブ内の➏ユーザー定義を選択してください。
種類の入力欄の箇所をキーボードの「Delete」キーなどで削除してから新たに入力を行います。
入力するのは、今回「日」と表示させたいので➐「0”日”」と入力してください。するとサンプル欄に0日もしくはセルの値に日が追加されます。
確認が出来た場合➑「OK」を選択します。
➒表示が「日付」みたいになります。
ただし、セルの中身のデータは「整数値」です。



日付の計算




まずは、単純に➋日付(シリアル)に整数値を加減させてみました。
上図➊で設定している数値、その下の表V列に指定している数値も整数値になります。
日付をカウントする際に、受付日である日をカウントの開始日にする場合は、すでに1日が始まってしまっている日を数えるために「-1」をします。
もし数えないのであれば「0」、仮にもう一日余裕を持たせるのであれば「+1」など設定してみても大丈夫です。ただし、約束事は早めに設定しておくほうが「事なきを得ます」
WORKDAY.INTL関数を使う




ここからは、WORKDAY.INTL関数の見本をお伝えします
WORKDAY.INTL関数基本

上図は➊2019年5月で実験をしています。➋受理日(開始日)を1日として計算するために「-1」を開始日に加算します。WORKDAY.INTL関数の引数➌の「週末」設定方法や➍「祭日」設定方法は、このページのトップでご説明させていただいております。
WORKDAY.INTL関数の書式は、WORKDAY.INTL(開始日,日数,週末,祭日)になります。
上図ⅱの計算式「=WORKDAY.INTL((U10+($V$5)),V10,“0000011”)」の説明になります。
(U10+($V$5))は、開始日「2019/5/1」を開始日とするためセル番地V5で設定している値「-1」を加算させた値を開始日としています。
V10、予定準備や余裕期限などを設定する箇所になります。今回は上図のように「支払期限」を設け「6日」と設定しています。
“0000011”は、週末「休日」の設定「土曜日・日曜日」になります。引数設定では「1」になります。どちらでも設定方法は大丈夫です。0と1の並びは、月~日の順番です。0は営業日、1は休日の表示です。なので”営営営営営休休”ということになります。
つまり5/1を開始日として、土日が休みの場合で支払期限が6日の場合は5/1を含んで数えた「5/8」が結果ということになります。
上図ⅲの計算式「=WORKDAY.INTL((U11+($V$5)),V11,“1000000”)」の説明になります。
(U11+($V$5))は、開始日「2019/5/1」を開始日とするためセル番地V5で設定している値「-1」を加算させた値を開始日としています。
V11、予定準備や余裕期限などを設定する箇所になります。今回は上図のように「支払期限」を設け「6日」と設定しています。
“1000000″は、週末「休日」の設定「月曜日」になります。引数設定では「12」になります。どちらでも設定方法は大丈夫です。0と1の並びは、月~日の順番です。0は営業日、1は休日の表示です。なので”休営営営営営営”ということになります。
つまり5/1を開始日として、月曜日が休みで祝日や振り替え休日は数えないので支払期限が6日の場合は5/1を含んで数えた「5/7」が結果ということになります。
上図ⅳの計算式「=WORKDAY.INTL((U12+($V$5)),V12,1,祝日2019)」の説明になります。
(U12+($V$5))は、開始日「2019/5/1」を開始日とするためセル番地V5で設定している値「-1」を加算させた値を開始日としています。
V12、予定準備や余裕期限などを設定する箇所になります。今回は上図のように「支払期限」を設け「7日」と設定しています。
1は、週末「休日」の設定「土曜日・日曜日」になります。文字列では「”0000011”」になります。どちらでも設定方法は大丈夫です。0と1の並びは、月~日の順番です。0は営業日、1は休日の表示です。なので”営営営営営休休”ということになります。
祝日2019は、名前の定義リストで作成した「配列指定」になります。祝日などあらかじめ設定した休日を除くように出来ます。今回は5/3と5/6になります。5/4と5/5は土曜日と日曜日と重なっていますのでカウントしません
つまり5/1を開始日として、「土曜日・日曜日」が休み且つ、祝日や振り替え休日を数えますので支払期限が7日の場合は5/1を含んで数えた「5/13」が結果ということになります。
上図ⅴの計算式「=WORKDAY.INTL((U13+($V$5)),V13,“0000000”,祝日2019)」の説明になります。
(U13+($V$5))は、開始日「2019/5/1」を開始日とするためセル番地V5で設定している値「-1」を加算させた値を開始日としています。
V13、予定準備や余裕期限などを設定する箇所になります。今回は上図のように「支払期限」を設け「7日」と設定しています。
“0000000”は、週末「休日」の設定「休みなし」になります。引数設定ではありません。0と1の並びは、月~日の順番です。0は営業日、1は休日の表示です。なので”営営営営営営営”ということになります。
祝日2019は、名前の定義リストで作成した「配列指定」になります。祝日などあらかじめ設定した休日を除くように出来ます。今回は5/3と5/4と5/5と5/6はカウントします。
つまり5/1を開始日として、週末の「休みがない」が、祭日の祝日や振り替え休日を数えますので支払期限が7日の場合は5/1を含んで数えた「5/11」が結果ということになります。
WORKDAY.INTL関数応用
他の日付を計算する関数を組み合わせてみます。

EDATE関数を使用します。EDATE関数は開始日の一月後を求める関数になります。
上図ⅳの計算式「=WORKDAY.INTL(EDATE(U20,1),V20,1)」の説明になります。
EDATE(U20,1)は、開始日「2019/8/1」に+1した月を開始日しています。
V20は、翌営業日にするために+1を設定しています。
1は、週末「休日」の設定「土曜日・日曜日」になります。文字列では「”0000011”」になります。どちらでも設定方法は大丈夫です。0と1の並びは、月~日の順番です。0は営業日、1は休日の表示です。なので”営営営営営休休”ということになります。
つまり8/1+1月目を開始日として、9月1日は「日曜日」で休みなので、+1日をした「9/2」が結果ということになります。
上図ⅳの計算式「=WORKDAY.INTL(EDATE(U21,1),V21,1)」の説明になります。
EDATE(U21,1)は、開始日「2019/8/1」に+1した月を開始日しています。
V21は、前営業日にするために-1を設定しています。
1は、週末「休日」の設定「土曜日・日曜日」になります。文字列では「”0000011”」になります。どちらでも設定方法は大丈夫です。0と1の並びは、月~日の順番です。0は営業日、1は休日の表示です。なので”営営営営営休休”ということになります。
つまり8/1+1月目を開始日として、9月1日は「日曜日」且つ8月30日は土曜日で休みなので、-1日をした「8/30」が結果ということになります。
日付の計算方法のその他
その他の日付を計算するときに便利な関数です。

EDATE関数は、書式 EDATE(開始日,月)になります。
引数 月に整数値の月数を設定すれば月数分の先や前の日付を取得できます。
EOMONTH関数は、書式 EOMONTH(開始日,月)になります。
引数 月に整数値の月数を設定すれば月数分の先や前の月末を取得できます。
EDATE関数とEOMONTH関数で過去の計算は設定上1900年1/1までになります。

EOMONTH関数を活用して、期間を設定した支払日を設定することができます。
例えば上図のように15日を閉めとした場合。
ⅲは、開始日が8/1なので開始日から15を引いた日付を7/15を開始日とします。その一月後の月末は8/31になるので15日を足した日付が9/15が締切日になるということです。
ⅳは、開始日が8/19なので開始日から15を引いた日付を8/4を開始日とします。その一月後の月末は9/31になるので15日を足した日付が10/15が締切日になるということです。
上記のようにして締め日を設定する場合は、EOMONTH関数が便利に活用できます。

EDATE関数を活用して、来月の営業日の翌日や前日を設定することができます。
ⅴは開始日が8/1その一月後を求めるために引数 月には1を設定しています。さらに翌日を求めるために+1をしています。
ⅵは開始日が8/1その一月後を求めるために引数 月には1を設定しています。さらに前日を求めるためにー1をしています。
上記のようにして翌月の翌日や前日を設定する場合は、EDATE関数が便利に活用できます。
まとめ
今回は、「日付関数」を使って月数計算の設定方法についてお伝えしてみました。
使い方次第では、便利な関数です。その方法は使い慣れたセンスに匹敵します。
なので、どんどん機能を使い倒してみましょう。
そしてあなたに逢った表現方法を見つけ出しましょう。
もしよかったら、ぜひお試しください。
楽しくエクセルをアレンジして今日も、新しい発見をしてみませんか!
自分に合ったお気に入りのスタイルでエクセルを使いこなしていきましょう。
ありがとうございました。