日付から残り営業日数を算出するEOMONTH関数とNETWORKDAYS関数-GSS/Excel/関数
仕事の営業管理や事務管理などで、特定の日付から残りの月内日数や、営業日数を出したいときに役立つ、EOMONTH関数とNETWORKDAYS関数を説明します。
ここでもARRAYFORMULA関数を使って、入力するセル数を少なくし作業を圧縮していきます。
ARRAYFORMULA関数についての詳しい説明はこちらにあります。同じ数式をコピペしなくても一行目に数式を入れれば勝手に2行目以降も自動で計算される四則演算とARRAYFORMULA関数-GSS/Excel/関数
EOMONTH関数なんかは特に使い勝手がよいのにあまり認知度が高くないように思います。
日付はちがうけれど同月内のこととして一緒に合算したいというときなどに、日付から月末日や月初日を特定し、その日付をトリガーにして条件にするということもできます。
上記のような場合、合算するほうの条件付けとして特定日付から特定日付までを合算するというやりかたでも同じような効果が出せます。
使い方
=EOMONTH(開始日,月)
まずはEOMONTH関数から説明します。
開始日は任意の日付を入れます。月はその開始日から何か月後の月の最終日を出すかを入れます。
例えば開始日と2022/1/1、月は0とした場合、2022/1/1の0か月後の月の最終日の2022/1/31を出せます。
開始日が同じで、月が1とした場合は2022/2/28、月が-1の場合は2021/12/31となります。
=NETWORKDAYS(開始日,終了日,休日)
次にNETWORKDAYS関数についてです。
こちらは開始日から終了日までの日数をだし、休日指定した日数を減らして営業日数を出す関数です。
開始日終了日は必ず指定が必要ですが、休日は省略が可能です。
今回設問内での説明では別途「祝日参照シート」というシートを作成しそちらを参照して説明していきます。
基本形を理解したところで早速設問をやっていきましょう。
A列に入力された日付から、「月初日」「月末日」「月内日数」「月内営業日数」「月内経過営業日数」「月内残営業日数」をそれぞれ出していきます。
正解例
[C2]=ARRAYFORMULA(EOMONTH(a2:a,0))
[B2]=ARRAYFORMULA(EOMONTH(A2:A,-1)+1)
まず月末日を出している[C2]から説明します。
ARRAYFORMULAをなくした場合の関数はこちら
[C2]=EOMONTH(a2,0)
これが大元の数式です。
これをARRAYFORMULAを適用して、2行目に入れた関数を下の行にも適用させると
[C2]=ARRAYFORMULA(EOMONTH(a2:a,0))となります。
月末日を出せたところで、応用として月初日を出します。このときEOMONTHを使うと簡単に月初日が出せます。開始日の「前末日の翌日」が「開始日の月の月初」になるということを利用します。
2022/4/8の月初日は2022/4/1で、2022/3/31の翌日です。つまり基本形は以下のようになります。
[B2]=EOMONTH(A2,-1)+1)
これにARRAYFORMULA関数を適用すると、
[B2]=ARRAYFORMULA(EOMONTH(A2:A,-1)+1)となる、ということです。
意外と簡単ですよね?
次にNETWORKDAYS関数を使う設問を解いていきます。
[E2]=ARRAYFORMULA(NETWORKDAYS(B2:B,C2:C,'祝日参照シート'!A2:A))
こちらのARRAYFORMULA関数を使わない基本形は
[E2]=NETWORKDAYS(B2,C2,'祝日参照シート'!A2:A)となります。
開始日と終了日をB列C列で出した月初日と月末日を指定します。
休日は下記のような祝日参照シートを見ています。
祝日として営業日数にカウントしたくない日をリスト化し参照するようにすると楽です。
こちらも入力できる行が緑色セルの2行目だけなので、ARRAYFORMULA関数を使って下の行に適用させます。
[F2]も同じように数式を作ることができます。
こちらは月初日からA列の日付までの間に営業日数がどれだけ経過したかを見るので、開始日をB列の月初日に、終了日をA列の日付にすればよいとなります。
[F2]=ARRAYFORMULA(NETWORKDAYS(B2:B,A2:A,'祝日参照シート'!A2:A))
[D2][G2]は四則演算なので説明は割愛しますが、次のような関数を入れています。
[D2]=ARRAYFORMULA(C2:C-B2:B+1)
[G2]=ARRAYFORMULA(E2:E-F2:F)
まとめ
- EOMONTH関数・NETWORKDAYS関数の使い所
- ある日付の月初日月末日をだしたいとき
- 構文
- =EOMONTH(開始日,月)
- =NETWORKDAYS(開始日,終了日,休日)
- 例文
- EOMONTH
- =EOMONTH(a2,0)
- =ARRAYFORMULA(EOMONTH(a2:a,0))
- =ARRAYFORMULA(EOMONTH(A2:A,-1)+1)
- NETWORKDAYS
- =NETWORKDAYS(B2,C2,'祝日参照シート'!A2:A)
- =ARRAYFORMULA(NETWORKDAYS(B2:B,C2:C,'祝日参照シート'!A2:A))
- EOMONTH