Home 学習室 Excel練習場 初級問7: 生年月日から満年齢を求める
初級問7: 生年月日から満年齢を求める 印刷 Eメール

問題

A列に氏名が、B列にそれぞれの生年月日が入力されています。
C列に現在の満年齢を表示するようにしたいと思います。

C列に(満)年齢を表示

もちろん「手入力」はダメです。このExcelファイルを開いた日の時点での満年齢が、
常に正しく表示されるようにしてください。

download.gif 問題のダウンロード(zip圧縮)

コメントとヒント

「このExcelファイルを開いた日」はTODAY関数で取得できます。(問題シートのE1にはTODAY関数がセットされています。)

「今日」が判れば、「生年月日」から「今日」までの間に何年の隔たりがあるか?を計算すればいいわけですね。

ということで素直に「生年月日」から「今日」を差し引いて、365で割って...等とすると失敗します。
うるう年を考えなければいけませんね?

うるう年の処理をまじめに考えると大変です。
ここはズバリ、「ある日付から別の日付までの間の隔たり」を教えてくれる関数を使います。

問題、というか、「ある日付から別の日付までの間の隔たり」を教えてくれる関数」を知っているかどうか、というだけですねsmiley

用いる関数は「DATEDIF」です。
この関数は【開始日】, 【終了日】, 【求める間隔の種類】の3つの引数を指定すると、
【開始日】と【終了日】の間隔を、【求める間隔の種類】に従って返してくれます。

書式は、
=DATEDIF(【開始日】, 【終了日】, 【求める間隔の種類】)
です。

この関数は「関数の挿入」ボタンでは挿入できません。(隠し関数?!)
直接キーボードから入力してください。

【開始日】と【終了日】の間隔を満年数で求める場合は、 【求める間隔の種類】に「"Y"」を指定します。
ということで、最初の年齢セルC2には、生年月日から今日までの間隔を満年数で求めればいいので、
=DATEDIF(B1, TODAY(),
と入力します。 全角、半角に注意してください。(数式はすべて半角で入力してください)

あとはオートフィルを使ってC2をC21までコピーして完成です。

  • DATEDIF関数は、【終了日】のほうが【開始日】よりも(時間的に)後でないとエラーになります。
  • 【終了日】、【開始日】はExcelが日付であると理解することができる文字列("平成20年7月30日"など)でもきちんと計算してくれます。
  • 【求める間隔の種類】に"M", "D"を指定すると、それぞれ満月数、満日数を表示します。他にも日付のうちの年や月や、日を無視して間隔を返してくれる"MD", "YM", "YD"などが指定できます。
    詳細は...どこかで検索してくださいcheeky

 

コメントを追加


セキュリティコード
再読込み