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

もちろん「手入力」はダメです。このExcelファイルを開いた日の時点での満年齢が、
常に正しく表示されるようにしてください。
問題のダウンロード(zip圧縮)
コメントとヒント
「このExcelファイルを開いた日」はTODAY関数で取得できます。(問題シートのE1にはTODAY関数がセットされています。)
「今日」が判れば、「生年月日」から「今日」までの間に何年の隔たりがあるか?を計算すればいいわけですね。
ということで素直に「生年月日」から「今日」を差し引いて、365で割って...等とすると失敗します。
うるう年を考えなければいけませんね?
うるう年の処理をまじめに考えると大変です。
ここはズバリ、「ある日付から別の日付までの間の隔たり」を教えてくれる関数を使います。
問題、というか、「ある日付から別の日付までの間の隔たり」を教えてくれる関数」を知っているかどうか、というだけですね
用いる関数は「DATEDIF」です。
この関数は【開始日】, 【終了日】, 【求める間隔の種類】の3つの引数を指定すると、
【開始日】と【終了日】の間隔を、【求める間隔の種類】に従って返してくれます。
書式は、
=DATEDIF(【開始日】, 【終了日】, 【求める間隔の種類】)
です。
この関数は「関数の挿入」ボタンでは挿入できません。(隠し関数?!)
直接キーボードから入力してください。
【開始日】と【終了日】の間隔を満年数で求める場合は、 【求める間隔の種類】に「"Y"」を指定します。
ということで、最初の年齢セルC2には、生年月日から今日までの間隔を満年数で求めればいいので、

と入力します。 全角、半角に注意してください。(数式はすべて半角で入力してください)
あとはオートフィルを使ってC2をC21までコピーして完成です。
-
DATEDIF関数は、【終了日】のほうが【開始日】よりも(時間的に)後でないとエラーになります。
-
【終了日】、【開始日】はExcelが日付であると理解することができる文字列("平成20年7月30日"など)でもきちんと計算してくれます。
-
【求める間隔の種類】に"M", "D"を指定すると、それぞれ満月数、満日数を表示します。他にも日付のうちの年や月や、日を無視して間隔を返してくれる"MD", "YM", "YD"などが指定できます。
詳細は...どこかで検索してください
|