エクセルでは日付を扱うことが非常に多いですが、その中でも『生年月日』という日付はよく出てきます。
よくあるのが、『生年月日』から『年齢』を計算したり、『入社日』から『勤続年数』を計算したりというもの。
今回は、『生年月日』から『年齢』の自動計算や、『入社日』から『勤続年数』の自動計算をする方法を紹介します。
この記事の内容
- DATEDIF関数を使って、年齢や勤続年数を自動計算する方法
- DATEDIF関数を使って、年数にさらに、経過月数、経過日数を自動計算する方法
ようは、『経過年数』を計算する方法です。
他にも『経過月数』、『経過日数』もあわせて紹介するので、ぜひ参考にしてください。
エクセルで生年月日から年齢を自動計算する方法(西暦編)
DATEDIF関数
- 経過年数、経過月数、経過日数を計算するのはDATEDIF関数。
- 引数には、開始日、終了日を指定し、経過の単位として年、月、日を指定できる。
年齢を計算するためには、DATEDIF関数を使うのが一番簡単です。
まずは、西暦になっている『生年月日』から『年齢』を自動で計算する方法。
下のように西暦の生年月日が入力されている表を使って、『今の年齢』を表示させてみます。
『年齢』の列(E3)に、次のような関数式を入力すると、自動計算された『年齢』が表示されます。
=DATEDIF(D3, TODAY(), "Y")
DATEDIF関数の第一引数に開始日付となる生年月日のセルの位置(D3)、第二引数に終了日となる今日の日付のTODAY関数、第三引数には経過を表す単位の年(”Y”)を指定しています。
ちなみに、TODAYは今日の日付を返す関数で、エクセルをいつ開いた時の『今の日付』を返します。
では、手順の方に戻って。
一人の『年齢』がDATEDIF関数で求まったので、他の人の『年齢』も計算されるように、入力済のDATEDIF関数をコピーしていきます。
DATEDIF関数を入力したセルを選択し、右下のフィルハンドルのところでマウスをダブルクリックします。
マウスが十字の形に変わったら、ダブルクリックで『フィルコピー』とよばれるコピーができます。
全員のコピーができると、このように年齢が自動で計算されます。
フィルコピーはコピー先ごとに参照先(セルの位置)を自動で変更してくれる
フィルコピーは、コピー先にあわせてセルの位置を変更してくれる便利なコピーです。
例えば、3行目には次の式を入力しました。
=DATEDIF(D3, TODAY(), “Y”)
これをフィルコピーを使って4行目、5行目とコピーしていくと、次のようにコピーされます。
=DATEDIF(D4, TODAY(), “Y”)
=DATEDIF(D5, TODAY(), “Y”)
このように、生年月日の位置をその行にあわせた位置に自動的に変更してくれるので、コピーした後に自分でセルの位置をいちいち修正する必要がありません。
このあたりはエクセルの賢いところです^^
終了日を固定の位置にする場合のDATEDIF関数の書き方
ここまでは、終了日の引数にTODAY関数を直接指定しました。
もし、終了日を各行ごとではなく決められた固定の位置にしたい場合は、終了日の指定は注意する必要があります。
下の表では、現在日付が入力されている固定の位置C2に、TODAY関数を使って今日の日付が入力されています。
この時のDATEDIF関数の終了日の指定は、C2ではなく$C$2と書きます。
終了日の位置が相対アドレスの場合にフィルコピーを使うと、エクセルは『相対アドレスなので行にあわせた位置に変更する必要がある』と判断し、D4をD5やD6のようにどんどんずらしていきます。
でも、ここでは終了日を固定としているので、エクセルに勝手に終了日の位置をずらされると困ります。
そこで、相対アドレスの代わりに絶対アドレスを指定することで、絶対アドレスを勝手に変更されないようにします。
つまり、エクセルは『$』記号が付いた絶対アドレスの場合には勝手に変更しません。
したがって、固定の終了日を絶対アドレス(参照)にすることで、他の人にも正しくコピーされるようになります。
実際にコピーした結果を見ても、正しく年齢が計算されているのがわかると思います。
エクセルで生年月日から年齢を自動計算する方法(和暦編)
続いては、『生年月日』が和暦の日付だった場合の方法。
和暦の日付は一旦西暦に変換する必要がありそうですが、和暦のままでもDATEDIF関数は正しく処理してくれます。
なので、和暦だからといって特別なことをする必要はありません。
西暦でも和暦でもDATEDIF関数が同じように使える理由
なぜ、和暦でも西暦と同じようにできるのかというと、エクセルは西暦であろうが和暦であろうが、『日付をシリアル値という特別な数値で管理』しているからです。
シリアル値の解説をここですると長くなるので割愛しますが、エクセルで日付を扱う場合はシリアル値についても理解しておくことが非常に重要といえます。
興味があれば、シリアル値についての詳しい解説をしている次の記事を読んでみてください。
必ず役に立つと思いますよ^^
話を手順に戻して。
結局、西暦と全く同じようにDATEDIF関数を書けば、このように『年齢』が求まります。
ここまで紹介したように、DATEDIF関数は西暦、和暦にかかわらず年齢を求めることができます。
DATEDIF関数は日付形式ではない『文字列の日付』も正しく計算できる
セルに入力した日付は『値がシリアル値の日付』として処理されます。
DATEDIF関数のすごいところは、シリアル値になっていない『文字列の日付』もきちんと日付として処理することです。
例えば、下のエクセルのように『日付形式』ではなく『文字列』で日付が入力されていても、DATEDIF関数はきちんと処理してくれます。
ただし、文字列の日付は『正式な元号』であることや、『日付も矛盾がない』ことが前提条件です。
普通は文字列として日付を入力することはないと思うので、あまり役に立つ情報ではないかもしれません。
でも、文字列の日付があった場合はDATEDIF関数はかしこく処理してくれますよ^^
DATEDIF関数で入社日から勤続年数を自動計算する
続いては、開始日に入社日を、終了日に今日の日付を指定して勤続年数を求める方法。
これも紹介してきた『年齢』を求める方法と同じ、開始日が『生年月日』から『入社日』に変わっただけです。
上記エクセルの例では、開始日付に入社日のE3を指定し、終了日付に今の日付のTODAY関数を指定しています。
DATEDIF関数で入社日から経過月数、経過日数を自動計算する
今までは『経過年数』を求める方法でしたが、DATEDIF関数では『経過した月数』や『経過した日数』を求めることもできます。
年単位ではなく、もっと細かい『月単位』、『日単位』で経過日数を求めたい場合に使える方法ですね。
DATEDIF関数で『経過年数』+『経過月数』を求める
まずは、『14年1ヶ月』のように年数+月数を求める方法。
関数式は次のように入力します。
=DATEDIF(D3, TODAY(), "Y") & "年" & DATEDIF(D3, TODAY(), "YM") & "ヶ月"
経過月数を求める二番目のDATEDIF関数では、第三引数に『YM』を指定します。
これで最後の年の経過した月数が計算されます。
DATEDIF関数で『経過年数』+『経過日数』を求める
今度は、『14年55日』のように年数+日数を求める場合。
関数式は次のように入力します。
=DATEDIF(D3, TODAY(), "Y") & "年" & DATEDIF(D3, TODAY(), "YD") & "日"
経過日数を求める二番目のDATEDIF関数では、第三引数に『YD』を指定します。
これで最後の年の経過した日数が計算されます。
DATEDIF関数で『経過年数』+『経過月数』+『経過日数』を求める
最後は、『14年1ヶ月25日』のように年数+月数+日数を求める場合。
関数式は次のように入力します。
=DATEDIF(D3, TODAY(), "Y") & "年" & DATEDIF(D3, TODAY(), "YM") & "ヶ月" & DATEDIF(D3, TODAY(), "MD") & "日"
経過月数を求める二番目のDATEDIF関数では、第三引数に『YM』を指定。
経過日数を求める三番目のDATEDIF関数では、第三引数に『YD』を指定。
これで最後の年の経過した月数、最後の年の経過した日数が計算されます。
DATEDIF関数で『年数』、『月数』、『日数』だけを求める
場合によっては、経過した『年数だけ』、『月数だけ』、『日数だけ』を求めたいこともある思うので、紹介します。
上から、C1の基準日付から本日(TODAY関数)までの『経過年数』、『経過月数』、『経過日数』を求める方法です。
=DATEDIF(C1, TODAY(), "Y")
=DATEDIF(C1, TODAY(), "M")
=DATEDIF(C1, TODAY(), "D")
エクセルで生年月日から年齢を自動計算する方法のまとめ
まとめ
- DATEDIF関数は、開始日付、終了日付を指定すると、経過した年数、月数、日数を計算する。
- 『今の年齢』の計算をしたい場合は、DATEDIF関数とTODAY関数を併用する。
- DATEDIF関数で指定する日付は西暦、和暦を問わない。また文字列の日付も処理可能。
経過した『年数』、『月数』、『日数』を求めたい場合はエクセルを使っているとよくあります。
年齢、勤続年数、契約年数や、作業期間(月数、日数)を求めたり、納期までの残り日数を求めたりというように、日付けを適切に処理できることが必要になることも多いです。
今回紹介したDATEDIF関数は、『業務で使える関数』なので、ぜひ使いこなせるようにしてください。