• ベストアンサー

Excel関数で1800年代の年齢を算出する方法

Excel関数の DATEDIF を使って年齢の計算をしています。 具体的には、2006年3月31日時点での年齢を計算したいので、DATEDIF("誕生日","2006/3/31","Y")の 関数を利用しています。 しかし、1800年代の方の年齢はエラーとなり計算されません。 何かいい方法をご存知であれば教えて下さい。

  • brett
  • お礼率50% (21/42)

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

  • ベストアンサー
  • kaisendon
  • ベストアンサー率44% (114/257)
回答No.5

こんばんは とりあえず大きな勘違い >2006年3月31日時点での年齢を計算したいので こちらを考えていませんでした。 =YEAR(TODAY())-LEFT(A1,4)-(DATE(YEAR(TODAY()),MID(A1,6,2),RIGHT(A1,2))>TODAY()) この式は「今日現在の年齢」を求める計算式になります。 DATE(YEAR(TODAY()),MID(A1,6,2),RIGHT(A1,2)) この部分で「その人の今年の誕生日」を求めています。 A1に1805/09/05と入力されていれば 今年の誕生日は 2005/09/05 A1に1805/09/08と入力されていれば 今年の誕生日は 2005/09/08 DATE(YEAR(TODAY()),MID(A1,6,2),RIGHT(A1,2))>TODAY() 比較演算子 > を使う事でこの部分は「倫理式」となります。 (この式の先頭に = を付けて空いているセルに入力して確認してみて下さい) 「その人の今年の誕生日」と 今日現在(2005/9/7)の日付を > で比べることで、 TUREかFALSEが返ります。 DATE(YEAR(TODAY()),MID(A1,6,2),RIGHT(A1,2))>TODAY() 2005/9/5>2005/9/7 ←今年の誕生日が来ていればFALSE 2005/9/8>2005/9/7 ←今年の誕生日がまだならばTRUE になります。 倫理値FALSEは 0(ゼロ) TRUEは 1 として扱われます。 なので 1805/09/05生まれの人の今日現在(2005/09/07)の年齢は =YEAR(TODAY())-LEFT(A1,4)-(DATE(YEAR(TODAY()),MID(A1,6,2),RIGHT(A1,2))>TODAY()) =2005-1805-FALSE =2005-1805-0 =200 (200歳、今年の誕生日はもう来ている)となります。 1805/09/08生まれの人の今日現在(2005/09/07)の年齢は =YEAR(TODAY())-LEFT(A1,4)-(DATE(YEAR(TODAY()),MID(A1,6,2),RIGHT(A1,2))>TODAY()) =2005-1805-TURE =2005-1805-1 =199 (199歳、今年の誕生日はまだ来ていない)となります。 >2006年3月31日時点での年齢 ならば =2006-LEFT(A1,4)-(DATE(2006,MID(A1,6,2),RIGHT(A1,2))>DATE(2006,3,31)) とすればいいのではないかと思います。 (あまり深く検証していないので、間違っていたらゴメンナサイ) ※制限条件 誕生日を入力するセル(この式の場合A1) はあらかじめ「文字列」としておいて 西暦4桁/月2桁/日2桁 1980/01/07 のように 入力しておく必要があります。 ちなみに上記の式で 誕生日が2005/03/31の人の2006年3月31日時点での年齢は 1(歳) 誕生日が2005/04/01の人の2006年3月31日時点での年齢は 0(歳) と計算されたので多分大丈夫だと思いますが。。。

brett
質問者

お礼

試してみましたが、ちゃんと計算されました。 色々と丁寧に解説を頂きありがとうございます。

その他の回答 (4)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

A1に文字列(1900年以前は自動的に文字列になりますが)として"1800/4/1"のような日付が入っていて B1に日付として2006/3/31のような日付(シリアル値)が入っているとすると =YEAR(B1)-LEFT(A1,FIND("/",A1)-1)-(DATE(YEAR(NOW()),MONTH(B1),DAY(B1))>DATEVALUE(MID(A1,FIND("/",A1)+1,LEN(A1)))) のようにします。 単純に年を引き算して、その月日がまだ過ぎてなければさらに1を引きます。 (1900年以前と以後を)統一的に扱うには、B1も文字列として入力した方がいいような気がしますが、基本的に未来の日付であるなら、問題ないです。

  • haukappu
  • ベストアンサー率15% (46/296)
回答No.3

一旦100年ほど足して計算させてみては? 生まれた年に1000年足して、3007年の誕生日を 計算してみるとか。 (日数まで計算したいなら、閏が入って微妙にずれますが。)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

1800年代生まれで今生きてる方はいないと思いますが... A2:誕生日として =IF(ISTEXT(A2),DATEDIF(SUBSTITUTE(A2,"18","19",1),"2007/3/31","y"),DATEDIF(A2,"2006/3/31","y")) として100年ずらせば計算できます。

  • kaisendon
  • ベストアンサー率44% (114/257)
回答No.1

こんにちは ↓こちらが参考になりませんか? http://excelfactory.net/excelboard/exgeneral/excel.cgi?mode=all&namber=52235&rev=0

brett
質問者

補足

Kaisendonさま 早速回答を頂ありがとうございます。 参考のHPを拝見させていただきましたが、式の 内容がよく分かりませんでした。 もし、式の内容が分かれば解説をお願いしたのですが。 =YEAR(TODAY())-LEFT(A1,4) -(DATE(YEAR(TODAY()),MID(A1,6,2),RIGHT(A1,2))>TODAY())

関連するQ&A

  • EXCEL2003で、年齢を出す方法

    Excel2003を使用しています。誕生日を入力し、現在の年齢を出したいと思っているのですが、ネットで検索すると「datedif関数」を使用すればよいと書いてありますが、この関数が見当たらないのですが・・・。なくなってしまったんでしょうか?!もし、なくなったとすれば、最も簡単に年齢を出すには、どのようにすればいいでしょうか?

  • 年齢算出関数教えて下さい

    年齢算出関数で今まで =DATEDIF(A1,B1,"Y")A1は1937/2/27 B1は2004/3/22 と入れてで計算されましたが、今M20.15.20という様に出てきます。 なぜでしょうか。

  • Excel関数の年齢が合わない。

    DATEDIF関数を使っているのですが、 1975年6月に生まれた人の2023年5月の時点の年齢が合いません。 47歳と出るのですが、サイトや本人の書いた書類見ると48歳・・・ そもそも、47歳なのか48歳なのかサイトによって異なる。 何歳が正しいのですか? そして、この関数を使うことはあっているのでしょうか。

  • Excel2000で年齢計算したいのですが

    WindowsMeでExcel2000を使用しているものです。基準日と生年月日を入れると満年齢が自動計算されるようにしたいのですが、うまくDATEDIF関数が入力できず困っています。どなたかわかりやすく教えて頂けませんか?

  • Excel関数で誕生日から年齢を表す式について

    Excel関数で、1つのセルにある個人の誕生年月日が入力されているとします。 そのセルに対応する別のセル上に、常にエクセルを読み込んだ日の時点の正確な 年齢を表すことができるIF関数というものが存在するでしょうか。 あると非常に便利なので、どなたかご存知の方は教えてくだい(__)

  • 別々のセルから、指定された日時点の年齢を割り出す方法

    たとえば、Excel2007でA列に生年(1971)、B列に誕生した月(5)、C列に誕生した日(1)と入力されている場合、D列で2009年9月30日現在の年齢を表示したいのですが、うまく割り出すことができません。DATEDIF関数を使うと思うのですが、どうしてもうまくいきません。このように、別々のセルから指定された日現在の年齢を割り出す方法をご存知でしたら、アドバイスをお願いします。

  • ExcelのDATEDIF関数を使って年齢を出しても正しく表示されません

    今、調査のためにExcel2003の関数を使って、年齢を出す作業をしようとしています。 同じような質問を参照してやってみたのですが、以下のように現れます。 セルD2:「1982/1/1」←生年月日 関数:「=DATEDIF(D2,TODAY(),"Y")」 その結果表示された値:「1900年1月26日」 なぜ年齢が表示されないのかが疑問です。 どうか宜しくお願いします。

  • エクセルでエクセル 年齢の計算式の後に歳を入れる

    DATEDIFで誕生日から年齢を計算したのですが年齢の後ろに歳を表示させたいのですがどうすればいいでしょうか?

  • エクセルで年齢表示の方法

    社員リストを作成しております。 今日現在の年齢をDATEDIF関数で計算して表示していますが、最後の引数を"Y"とすると45歳とか48歳となってしまいます。 これを45.3歳とか48.7歳といったような小数点付きで表示させるにはどのような引数を利用すればよいか解らず困っています。どなたか詳しい方、助けて下さい。 よろしくお願いします。

  • EXCEL エクセル 年齢 DATEDIF関数 空白の場合

    EXCEL2007 年齢を計算するのに A1セルに 生年月日を入力、 B1セルに年齢  =DATEDIF(A1,TODAY(),"y")で  満年齢がでると思うのですが A1セルが空白の場合 109となります。 A1セルが空白の場合 B1セルも空白になる関数を教えてください。 本を見ながらの初心者です。よろしくお願いします。

専門家に質問してみよう