日数の差を計算して経過日数や年に換算する関数です。
=DATEDIF(開始日,終了日,単位)
「単位」部分で表示する内容を決めます。
- “Y” Year、年数で表示
- “M” Month、月数で表示
- “D” Day、日数で表示
- “MD” 月と年を無視した日数の差(30日の範囲)
- “Ym” 日を無視した未来1年間の月数の差
- “YD” 月を無視した未来1年間の日数の差(365日の範囲)
個別に解説を入れますがDATEDIFはExcel内での説明がありません。
知っていれば開始日を半角カンマで区切って終了日ぐらいまでは関数を触ったことがある人ならするでしょう、使ってみればわかるだろう、と。
しかし、単位部分は説明無しではちょっと厳しいんではなかろうか。
関数の検索で「DATEDIF」「経過日数」で探しても出ないものだから、自分のExcelにはDATEDIFがない、入ってないとなってしまうのだ。
さらにMD,Ym,YDに関してはちょっと限定的すぎるというか公式でも
「重要: 制限事項があるため、”MD” 引数の使用はお勧めしません。」
お勧めされていませんでした。
特殊系は後述するので、そのシーンがあれば利用してみましょう。
まずは使ってみる。
使用シーンを羅列してみましょう。
ここで言うtoday()は2021年2月22日です。
うるう年はカウントされています。
1/1~12/31は364日(うるう年は365日)で経過日計算されています。
- 年齢を出す(経過年数を調べる)
=DATEDIF(“1980/1″,TODAY(),”y”)
【1980年1月から今日までで「41」という表示になる】 - 入社日から勤続年数を調べる
=DATEDIF(“2000/4/1″,TODAY(),”y”)
【2000年4月1日入社だと「20」、2021年4月1日で「21」】 - 2つの期間の経過した日数を見る
=DATEDIF(D1,D2,”d”)
【セル指定でも可、経過日数を年で割るとハマるので注意】
5160日を365日で割ると14.1369….となるので、思わず14年と1か月ちょっと、としてしまいがちですが罠です。
知りたい年数は年数で、月数は月数で必ず計算しましょう。
365で割ってしまうとうるう年は計算されなくなるし、月数は12なのに0.01~.99なので正確な月数も出ません。
小数点以下÷10×12でそれっぽい値が出ますが、経過年数や月数を計算しているという事はかなり大事な計算をしている事が多い為、危険です。
例えば勤続年数を調べている場合は退職時、退職金の計算などで使ったり
年齢を出すというケースは福利厚生で〇才以上の人など就業規則で決められた月数や年数を基にしていれば、誤って計算されている事=信用損失につながるからです。
お金のミスは少なかった場合は増やすことは出来ますが信用が無くなります、多かった場合に減らす事は出来ませんし、減らせばさらに信用を失います。
人は自分にしか興味がありませんので、どのように取り繕っても「自分にされた不義理」はもはや取り返しがつきません。
microsoftがこの関数の説明をしない理由が分かりませんが、キチンと理解し、利用しましょう。
さて、最初の「単位」の使い方ですが、”y”,”m”,”d”は分かったと思います。
応用の危険性は理解した上で使うところまで分かりましたが、問題は後半の3つ、マイクロソフトさえ「使わない方が良いかもよ」というなら何故残したんだという不思議な3点を紹介しましょう。
“MD” 月と年を無視した純粋な日数の差
これは日数だけの差を表示させるもので、同じ日だと0なので、経過日数ですね。例えば(“2/1″,”2/10″,”MD”)とした場合は9です。
過去を計算しようとすると
数値に問題があるとして、エラーです。
未来はほぼ際限なく無視するので
日数の表示がされるところまでは値として表示されます。
月の計算もしないので、何やら違和感がありますね。
もし使うとしたら月の習慣で行いたい事に対して
「毎月同じ日に同じ事をするタスクがある、数値が30(1か月経過)に近くなるほど色を濃くする条件を設定して管理する」
とかでしょうか、週報・月報提出とかを管理側が表示させる分には便利かもしれませんね。
“Ym” 日を無視した未来1年間の月数の差
MDと似ていますが、こちらは月数。当月は0で11が最大値です。
過去はMDと同じようにエラーになり、未来は11か月(1年間)で区切られ表示されます。
Ymの場合は一般利用だと「目的の月まであと何か月」という状況ぐらいしか考えつきませんが、工程管理や品質監視プログラムではMDと共に産業利用ならば結構使うシーンはありそうですね。
“YD” 月を無視した未来1年間の日数の差
MDと違うのは365日で表示されるという事です。
検査範囲にうるう日が含まれていれば366日(当日は0日なので表示は365日)で表示されます。
しかしマイクロソフトは推奨していないので、d,m,yを上手く使うのが良いかもしれませんね。
DATEDIF関数は使えると分析や集計時にちょっとだけ便利です、忘れても検索して見れば良いので、確実に使いながら自分に入れていきましょう。