[[20031222180236]] 『年齢101歳以上』(クンクン) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『年齢101歳以上』(クンクン)

TODAYを使って生年月日から年齢を計算していますが、101歳をこえると皆100歳までしか計算されないようで・・・すみませんが101歳以上の年齢を出すにはどのようにしたらよいですか?


 計算式をどのようにしているのか、分かりませんがエクセルは1900年(もしくは1904年)
以前は計算できません(1900/1/1がシリアル1で始まりになっています。)
ですから1800/11/15と入力しても文字列扱いで数値として扱われません。しかし、工夫しだい
で計算は出来ます。
=DATEDIF(DATE(LEFT(A1,4)+200,MID(A1,6,2),RIGHT(A1,2)),DATE(YEAR(TODAY())+200,MONTH(TODAY()),DAY(TODAY())),"y")
誕生日に200年をたして、今日の日付に200年を足して、つじつまを合わせます。(ケン)


 1900/1/1以前と以降が混在して計算させるならば、
=IF(ISERROR(FIND("/",A1,1)),DATEDIF(A1,TODAY(),"Y"),1900-(LEFT(A1,FIND("/",A1,1)-1))*1+DATEDIF("1900/1/1",TODAY(),"Y"))
では、どうでしょう。
日付表示にしていても1900/1/1以降は、実計算はシリアル値で行われます。
1900年以前と以降の日付を入力し、表示形式を標準にすると実計算される値の違いがよく分かります。
上の式では、1900/1/1以降は ISERROR(FIND("/",A1,1))=FALSE、以前はTRUEとなる事を応用しています。  
能書きが当てにならない (sin)


 sinさん、お久しぶりです。またPCが壊れてしまったのですか?(笑)
混在の件、1900-(LEFT(A1,FIND("/",A1,1)-1))*1+DATEDIF("1900/1/1",TODAY(),"Y"))も
良いですね。クンクンさん、sinさんの式をお勧めします。(ケン)


 ケンさん、こんにちは。いつも拝見させていただいてます。VBEの方でも躍進中ですね。
何かと忙しくて、のぞくだけでしたが、今日はちょっと時間があったのでカキコしてみました。
苦手な日付・時間関連の関数に手を出してしまいましたが、大丈夫そうでしたね。
表示されてる物(しかも、日常的に目にするもの)と裏で実計算に使われるシリアル値、
数値と文字列など一辺倒ではいきませんなぁ。
エクセルも人生も    (sin)


ケンさん、sinさん、ありがとうございました。(クンクン)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.