- ベストアンサー
年齢計算の関数を教えて下さい
生年月日がわかっているリストから今日その人たちが何歳になるのかしりたいのですが。よろしくおねがいします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
データベース…はどんなものをお使いでしょう? Excelなら DATEDIF関数ですね。 http://www.nils.ne.jp/~fuzzy/EXCEL/excel_004.htm A ccessなら こんな関数を使ってます。 http://www.ruriplus.com/msaccess/faq/faq_027.html ロータス製品やオラクルでしたらワタシの範疇外ですので、他の識者にお任せします。
その他の回答 (5)
- muyoshid
- ベストアンサー率72% (230/318)
こんにちわ。 > オラクルは知らないです(汗 Oracle の場合、FLOOR(MONTH_BETWEEN(SYSDATE, 生年月日)/12) でできると思います。 参考になれば。
お礼
ありがとうございました。
- 4500rpm
- ベストアンサー率51% (3212/6290)
#2です。確かに誕生日でも年を取らないことがあるのはわかっていましたので =YEAR(TODAY()-A1+2)-1900 ↑を入れていることで問題ないと思っていたのですが。 以前、エクセルで作った名簿でシステムの日付を替えたりして10人ほど確認しましたが、問題なかったので使ってました。それで良いと思って載せたのですが...(^^ゞ >誕生日の前々日に年をとったり前日に年をとったりと 安定しません。 どうしてこうなるんでしょうね。
お礼
ありがとうございました。
- O_Denwa
- ベストアンサー率26% (46/172)
ロータス アプローチなら計算型フィールドに、こんな感じ。 If(IsBlank(生年月日), '不明', Year(Today()) - Year(生年月日) - (DateToText(Today(), 'MMDD') < DateToText(生年月日, 'MMDD'))) ※生年月日リストのフィールド名を「生年月日」(日付型)とする場合。 ※改行無しで、繋げて入力。 オラクルは知らないです(汗
お礼
ありがとうございました。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
4500rpmさんの式は使えません。誕生日の前々日に年をとったり前日に年をとったりと 安定しません。 Hageoyadiさんの紹介したaccessでの方法(今年-誕生年-誕生日に達してなければもう1年) はあちこちでみかける方法ですね。私も昔FileMakerで使ったことがあります。 この方法は「誕生日に達してなければ」の判定に「月*100+日」に相当する数値を使うと ころがポイントで、これを思いつかないと結構面倒くさいことになります。かなりエレガ ントな解法だと思います。 でも、if関数での条件分岐をなくせたらもっと美しいのにと思いませんか? 「誕生日に達してなければもう1年」というフレーズから「繰り下がり」なんて懐かしい 言葉を思い出せれば、年*10000+月*100+日同士の引き算で「誕生日に達してなければ」 年の桁に繰り下がりが発生するんだということがわかりますね。そうすれば後は10000で 割って整数部分だけ取り出せばOKじゃないですか。 というわけで、 =int(((今年*10000+今月*100+今日)-(誕生年*10000+誕生月*100+誕生日))/10000) というのもアリです。シンプルでしょ。
お礼
ありがとうございました。
- 4500rpm
- ベストアンサー率51% (3212/6290)
エクセルしかわかりませんが、 生年月日がA1に入ってるとして =YEAR(TODAY()-A1+2)-1900 の式ででます。 他によいやり方があるのかもしれませんが。
お礼
ありがとうございました。この方法もためしてみました。
お礼
早々の回答ありがとうございました。教えてgooは今回初めてつかいました。こんなにたくさんの方から回答がすぐにくるなんて本当にびっくりです。Hageoyadiさんの回答早速ためしました。gooです。