色んな日付を求める方法について解説していきます。
給料日の算出や年齢の算出などに役立ちます。
・はじめに
はじめに、日付はどのようにExcelで管理されているのかを理解する必要があります。
日付をセルに入力すると、同時に表示形式が”日付”や”ユーザー定義”などに変わるかと思います。
ちなみに、”2022/1/1(土)”などと直接入力されているのを見たことがありますが、編集時に曜日まで編集が出来てしまうのであれば、日付として認識されていません。
これでは日付の計算ができないため、修正する必要があります。
もしセル内に曜日も表示したい場合は、そのような表示形式で”yyyy/m/d(aaa)”などを設定する必要があります。
表示形式の設定方法についてはこちらを参考にご確認お願いします。
日付で管理されている場合は、表示形式を”標準”などにすることで、日付の実体であるシリアル値を表示させることができます。
シリアル値は「ある日を基準にした通し番号」になります。
Excelでは、基本1900年1月1日を「1」として数えられています。
ちなみに時間は、24分の1で計算します。
つまり、”44562″が2022年1月1日の場合、”44562.25″は2022年1月1日の6:00を表していることになります。
・N日後やN日前を求める方法
日付がシリアル値で管理されていると解説しました。
日付の実体が数字であることから、通常の計算式が使えることが分かります。
そのため、1日後や1日前を求める場合は、足し算と引き算で求めることができます。
ちなみに、今日の日付を基準に計算したい時は、今日の日付のシリアル値を返すTODAY関数が使えます。
※「返す」という表現は関数を実行した結果を受け取ることを言います。
明日の日付を求めたい時は、「=TODAY()+1」で求めることができます。
・日付の差を求める方法(期限や年齢など)
単純な日付の差を求める場合は、引き算で求めることができます。
この時、正しく表示されない場合は、表示形式が影響している可能性があります。
以下の例では、黄色のセルの表示形式は”標準”にしています。
上記の方法は、日にちの場合には便利ですが、月や年で求める際には計算が複雑になってしまいます。
そんな時に使えるのがDATEDIF関数になります。
※DATEDIF関数は入力候補に表示されない特殊な関数になります。直接入力することで使えます。
使い方は、「=DATEDIF(開始日,終了日,単位)」になります。
便利な単位のみ紹介しますと以下になります。
※DATEDIF関数は特殊な関数で、いくつか注意する点があります。
詳しくはこちらの公式サイトをご確認ください。
年齢を求める場合に関しては以下のように求めることができます。
他に、DATEDIF関数を使わずに年を求める方法も紹介します。
日付の年月日は、YEAR関数、MONTH関数、DAY関数で抽出することができます。
つまり、YEAR関数で年のみを抽出して引き算するという方法です。
ただ、単純な引き算ですと日にちなどが考慮されていないので注意する必要があります。
・特定の日付を求める方法(翌月5日など)
年月日をそれぞれ設定してシリアル値に変換するDATE関数を使います。
使い方は、「=DATE(年,月,日)」です。
基準日の翌月の5日を求める場合は以下のようになります。
※年月を別々で設定し、月に関してのみ+1して計算しています。
ちなみに、このDATE関数の月に「13」や「-1」など通常では存在しない値を設定したとしても、正しく計算されます。
日に関しても同様で大きすぎた分や小さすぎた分は年月に反映されます。
→つまり翌年は月に+12しても求めることができます。
・月末を求める方法
月末を求めるにはEOMONTH関数を使います。
使い方は、「=EOMONTH(開始日,月)」です。
ちなみに、先ほど解説したDATE関数でも求めることができます。
※日の「0」は1日より1日前として計算されます。
・N日後やN日前の営業日を求める方法
営業日(週末や休日を除いた日付)を求めるには、WORKDAY関数やWORKDAY.INTL関数を使います。
WORKDAY関数の使い方は「=WORKDAY(開始日,日数,[祭日])」です。
こちらの関数は週末が土日で計算されます。祭日(休日)を設定しない場合は省略することができます。
WORKDAY.INTL関数の使い方は「=WORKDAY.INTL(開始日,日数,[週末],[祭日])」です。
こちらの関数はWORKDAY関数に加え、週末を自由に設定することができます。
週末の設定値は以下になります。
※省略時は土日として設定されます。
WORKDAY.INTL関数の方がWORKDAY関数に比べ汎用性があるため、こちらでは、WORKDAY.INTL関数で解説していきます。
例えば土・日を週末とし、土・日・休日を除いた3日後を求める場合、以下のようになります。
休日に関しては、引数の[祭日]に”L5:L9″と休日一覧の範囲を指定します。
次に、同じ条件で3日前を求めていきます。
引数の[日数]を負の値にすることで簡単に求めることができます。
次に週末を金・土・日にした場合の3日前を求めていきます。
週末の候補に金・土・日がないため、”0000111″と記述して求めていきます。
・特定の日付の直近の営業日を求める方法(翌月5日以降の直近の営業日など)
給料日などを求める際に、このような計算が必要になってくるかと思います。
指定日の直近の営業日を求めるにはDATE関数とWORKDAY(WORKDAY.INTL)関数を組み合わせることで実現できます。
まず、土・日・休日に含まれる翌月の7日(2023/1/7)を求めます。
この求めた日付を元に、直近の営業日を求めます。
営業日を求める際に、WORKDAY(WORKDAY.INTL)関数を使います。
ただ、WORKDAY(WORKDAY.INTL)関数では0日後や0日前を指定することができません。
そのため、次の営業日を求める場合は、1日前から1日後を求めます。
先ほどのDATE関数の引数の[日]を”6″にして、DATE関数をそのままWORKDAY(WORKDAY.INTL)関数の引数の[開始日]に設定します。
そうすると、以下のように求めることができます。
では、前の営業を求める場合についても確認していきます。
先ほどの逆で求めることができるので、1日後から1日前というようにしていきます。
基準日が今日で来月の給料日(例えば、25日、土・日・休日の場合は、次の営業日)を求める場合は、以下のようになります。
以上が、色んな日付の計算方法になります。