Excelで2つの日付の間の日数が何日かを知りたい時、それぞれの日付を別々のセルに入れ、セル指定して引き算をすることで計算できます。
または、DAYS関数を使って、計算することもできます。
DAYS関数は、
=DAYS(終了日,開始日)
で記述します。
例えば、9月1日から9月30日までの日数を計算すると、結果は29になります。
つまり、これら引き算やDAYS関数の結果は、「9月が30日間ある」という結果を求めるには適してなく、「9月30日は、9月1日の29日後である」という結果を示しています。
では、稼働日数(営業日数)の計算をしたいときはどうしたらよいでしょうか?
例えば、今月の営業日数は何日か?を知りたい時や、数ヶ月先のイベントまでの実際の出勤日数を計算したい時などです。
そんな時は、NETWORKDAYS.INTL関数(土日休みの時はNETWORKDAYS関数)を使います。
カレンダーを見ながらいちいち数えなくても、これを使えば、さくっと稼働日を計算できます。
ぜひ覚えて使って下さい。
NETWORKDAYS.INTL関数、NETWORKDAYS関数の概要
稼働日(営業日)の計算は、指定した2つの日付の間で、曜日による休日指定と、日付による休日指定をし、指定した休日以外の日数を計算するものです。
2つの関数の違いは、NETWORKDAYS.INTL関数は、休日とする曜日を自分で指定するのに対し、NETWORKDAYS関数は、土日が休みに固定で設定されていることです。
関数の実際の記述は、それぞれ下記になります。
NETWORKDAYS.INTL関数
=NETWORKDAYS.INTL(開始日,終了日,[週末],[祭日])
[週末]の部分 ⇛ 曜日での休日指定、省略した場合は土日休みとなる
[祭日]の部分 ⇛ 日付での休日指定、省略可
開始日、終了日の間の稼働日数を、週末と祭日で指定した日を除いて計算します。
例えば、開始日9月1日、終了日9月30日とし、休日なしで設定した場合、稼働日は30日となります。
週末という用語になっていますが、各曜日毎に営業日か休日かを設定できますので、日曜のみ休みとか、月水金だけ営業とか、自由に設定できます。
NETWORKDAYS関数
=NETWORKDAYS(開始日,終了日,[祭日])
[祭日]の部分 ⇛ 日付での休日指定、省略可
土日を休みと設定して、開始日と終了日の間の稼働日数を祭日で指定した日を除いて計算します。土日休みは固定で変更できません。
曜日による休日指定(NETWORKDAYS.INTL関数のみ)
NETWORKDAYS.INTL関数は、指定した日付の間の日数を、指定した休日を除いて計算する関数です。
=NETWORKDAYS(開始日,終了日,[週末],[祭日])
で指定します。[週末]の部分が、曜日での休日指定になります。
休日指定の仕方は、「週末番号」か、文字列で指定します。
休日となる曜日を0と1の文字列で指定する(おすすめ)
文字列での指定がわかりやすく、全てのパターンに対応できるので、おすすめです。
文字列は、7桁の1か0の数字で、左から月曜日、火曜日…となり、一番右が日曜日です。
1が休日、0が稼働日です。数値は必ず ”(ダブルクォーテーション)で囲います。
例えば、土日休みなら ”0000011” となり、木曜日と日曜日が休みなら “0001001” となります。
週末番号で指定する
週末番号での指定は、土日、日月など、続けて2日休みの場合と、日曜だけ、水曜だけ、など1日だけ休みの場合に設定されています。
週末番号で指定する時は、数値をそのまま入力します。
週末番号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
休日の曜日 | 土日 | 日月 | 月火 | 火水 | 水木 | 木金 | 金土 | 日 | 月 | 火 | 水 | 木 | 金 | 土 |
日付による休日指定
Excelでは祭日、という名称になっていますが、実態は、日付による休日の指定になります。祭日の指定は、あらかじめ祭日(休日として指定したい日付)の一覧表を用意しておき、それを式中で指定します。エクセルも日本の祝日一覧をあらかじめ組み込んでくれると、ユーザーは楽だと思うんですけども、そんな便利機能は無いようですので、こちらで指定しなければなりません。
祝祭日表の準備
あらかじめ自分で休日とする日を一覧表にしておきます。カレンダーの祝日に会社の休み(お盆休みや年末年始休暇など)を付け足すようにつくることが多いと思います。
また、隔週で土曜日が休み、とか、第3月曜日は休み、などの場合は、曜日で指定出来ないので、日付での一覧表に載せる必要があります。
計算式を載せるシートとは別のシートに一覧表をつくるのがおすすめです。
祝日は、内閣府のページに一覧表があります。
一覧表をつくったら、テーブル化しておきましょう。テーブル化すると後で数式の中でテーブル名と見出し名でデータを指定できるので、数式を読み解き易くなります。翌年の祝日を追加したり、休日が増えて追加したくなった時も、テーブル化しておけばデータを追加するだけで数式の中を変更しなくてよいので、便利です。
もちろん、今すぐ今月の稼働日を知りたいだけ、って時には、近くのセルにちょいちょいっと2,3日記入すればOKです。
祝祭日表の指定
休日の一覧表をテーブル化してある場合は、テーブル名[見出し名]で指定します。
数式の入力時にクリックして指定する場合は、データとして使う列の一番上(見出し名が入っているセル)の上の境界のあたりにカーソルを合わせると、カーソルの形が下向き矢印↓にかわるので、その状態でクリックすると、その列のデータが選択されたことになります。
その他の記述の仕方(式の中に直接記述、セル範囲指定)
NETWORKDAYS関数、NETWORKDAYS.INTL関数では、開始日、終了日の日付は、セル指定ではなく、数式の中に直接記載することもできます。
その場合、”2022/09/01″あるいはDATE(2022,09,01)のような記述になります。
祭日の指定も、テーブルではなく、セル範囲の指定でも、もちろん大丈夫です。
祭日は1日だけなら開始日・終了日と同様に数式のなかに直接記述できます。(VSTACK関数などを使えば複数の日でも直接数式中に記述することもできますが、あまり使う場面はないかと思います)
祭日は、省略でき、その場合は、休みがなく、全て稼働日として計算されます。(関数をつかわなくても、日付を入れたセルの引き算で計算できますね。
NETWORK.INTL関数とNETWORKDAYS関数のまとめ
稼働日数(営業日数)を計算する関数として、2つの関数があります。
土日休みの場合は、NETWORKDAYS関数を使用して下記のように記述します。
=NETWORKDAYS(開始日,終了日,[祭日])
あるいは、NETWORKDAYS.INTL関数で週末指定を省略して下記の記述になります。
=NETWORKDAYS.INTL(開始日,終了日,,[祭日])
休みの曜日を自由に設定したい場合は、NETWORKDAYS.INTL関数を使用して下記の記述になります。
=NETWORKDAYS.INTL(開始日,終了日,[週末],[祭日])
[週末]は、営業日を0休日を1として月から日まで記述します。例)”1001001” →月木日休み
祭日(=休日)は、別シートに一覧表をテーブルでつくるのがおすすめです。
コメント