パソコンから恋愛まで、みんなの知識、みんなで教えて!

OKWave

解決済みの質問

エクセル DATEDIF関数

色々調べたのですがよくわかりません。
DATEDIF関数で年齢計算させたいと思います。
適当なセルに本日の年月日を表示させ、
A列に生年月日、B列に年齢を出そうと思います。
そのため、B1にDATEDIF関数を入れ、B2から下の行に、この関数をコピーしました。
この結果、A列に生年月日を入れれば隣のB列に年齢は出るのですが、A列に生年月日を入れなくても、B列には生年月日を1900年とした年齢が表示されます。
(今年なら118歳が表示されます。)
生年月日を入れていない行には年齢を表示させたくないのです。
入力した人だけの平均年齢を出したいのですが、この118歳が邪魔になります。
どうすればいいのでしょうか。

投稿日時 - 2018-01-13 15:17:33

QNo.9417932

困ってます

質問者が選んだベストアンサー

=IF(A1="","",DATEDIF(A1,TODAY(),"y"))

投稿日時 - 2018-01-13 15:55:09

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

>A列に生年月日を入れなくても、B列には生年月日を1900年とした年齢が表示されます。(今年なら118歳が表示されます。)
あり得ない年齢ではないですよね?
しかし、Excelでは日付の扱いを1900/1/1以降に限定されていますので目的に合わないかも知れません。
また、未入力のセルは数値に評価すると0と言う暗黙の了解事項になっていますので、今日の日付から0を引くと2018年-1900年=118年のようになります。
つまり、Excelの日付は1900/1/1を1として、そこからの経過日数が実質の値です。1900/1/0は日付としてあり得ません。(1899/12/31が0のはずですが日付としては無効なので計算できません)
しかし、=DATEDIF(0,TODAY(),"y")および=DATEDIF(,TODAY(),"y")は有効な値として118を返します。これはMicrosoftが決めたことなので正否を論ずることができません。

>どうすればいいのでしょうか。
IF関数を使って生年月日が未入力のときは""を年齢欄に代入すれば良いと思います。

投稿日時 - 2018-01-13 20:26:35

ANo.3

回答はすでに出ています。
私が残念なのは、エクセルの仕組のうち日付の扱いの特殊な仕組みを勉強しないからこんな質問が出ることです。
はやい段階で教えてもらうべきです。独学では、これが遅れてしまう。
>色々調べたのですが
エクセルで使われる、日付シリアル値という考えや言葉に至ってなくて、勉強不十分です。
日付と認識された列・行のセルに入れる関数の引数では、空白セルを指定すると、それは0扱いで(これ自身は常識として知っているだろう)、エクセルの日付シリアル値という仕組みにより、0は(1900/1/1の1日前の)扱いです。
1900/1/0となって、あり得ない日付ですか、引き算したときや、数直線的に考えて期間日数を考えるときなどで、基点0に対応するものとして0は認められているようです。
エクセルのセルの値として、日付(シリアル値)のセルに、0は許されるが、-1はさらに前日-2などとは表せないようです。
表計算システム設計者は、20世紀以降の日付で十分だろうと、判断したのだと思います。
すべて、コンピュター利用では、数の表せる限界が出てきてしまいます。
日付も正の整数に対応付けたわけです。
それ以前の日付が使われそうな、歴史や天文学では、どうすうるのかき、興味があれば調べたり、考えて下さい。

投稿日時 - 2018-01-13 16:41:45

ANo.2

こんちゃ^^
日付って初めてだと手間取りますよねぇ~><
って事で・・・
B2に =IF(A2="","",DATEDIF(A2,TODAY(),"y"))
そして・・・A1に日付(誕生日)を入れると・・・
いかがです? 出ましたか? 出ない?
出たら後はお好きなようにして下さい

ちなみになんですが・・・
B2に =IF(A2="","","本日で"&DATEDIF(A2,TODAY(),"y")&"歳と"&DATEDIF(A2,TODAY(),"ym")&"ヶ月と"&DATEDIF(A2,TODAY(),"md")&"日目")
と入力してみて下さい

誕生日からの、経過 年、月、日が求まります^^

おまけ・・・1900年と出るには理由があって・・・0を日付表示すると
1900/1/0 となるからです これはネットでググってみて下さい ^^

投稿日時 - 2018-01-13 16:14:35