『和暦表示の生年月日から09年10月31日時点の年齢を』(ヒロ) 和暦表示の生年月日から09年10月31日時点の生年月日を求める。 過去分と重複していたらごめんなさい。 <例> F列       G列 生年月日(和暦) 年齢 630417 531230 090316 注)和暦は、大正、昭和、平成ともあります。 ---- > 注)和暦は、大正、昭和、平成ともあります。 では サンプルデータの場合 090316 ↑ これは大正でしょうか? 昭和でしょうか? 平成でしょうか? 判断する材料がなければできません。 (えくせる青年)2009/11/9 13:11 ---- えくせる青年さんへ このサンプルは大正です。(75歳ですかね) from:ひろ ---- (ひろ)さんへ 090316 この数字だけで判断しようと思うと大正9年、昭和9年、平成9年のどれか、としか 推測できませんよね? ということは、つまり、エクセルにも確定した答えを出す、計算なり処理なりが 出来ないと言うことです。 上二桁22以上は(平成21年の今は)昭和だと判断できますけれども。   >(75歳ですかね) 昭和9年ならそうかもしれません。 昭和と平成だけでも 63+21 = 84 になりま すから、大正9年生まれなら、89歳以上は間違いないのではないかと。 (みやほりん)(-_∂)b ---- >このサンプルは大正です。(75歳ですかね) ひろさんが判断できてもEXCELは判断できないよ。 この数字が「大正」だという事を「EXCEL」に理解させるための 情報(データ)が必要じゃない? (gobgob) ----- ごもっともでした。 なので、元データから元号の情報を追加しました。 <例> E列   F列       G列 元号   生年月日(和暦)  年齢 5    630417 5    531230 3    090316 元号は、3=大正、5=昭和、7=平成です。                                                                   (ひろ) ---- G2 =DATEDIF(LOOKUP(E2,{3,5,7},{"T","S","H"})&TEXT(F2,"00-00-00"),"2009-10-31","y") こんなので。 (gobgob) ---- gobgobさんの式をお借りして、元号に 3,5,7 以外が入ったら エラーになるように、ちょっと変更。   =DATEDIF(VLOOKUP(E2,{3,"T";5,"S";7,"H"},2,0)&TEXT(F2,"00-00-00"),"2009-10-31","y") 元号情報は、3,5,7 ではなくて、T,S,H の方が 数式が簡単で、視覚的にも間違いがふせげそうかと。    (純丸)(o^-')b ---- 代わり映えしませんが =DATEDIF(MID("T S H",E2-2,1)&TEXT(F2,"0-00-00"),"2009/10/31","y") (R) ---- みなさんへ アドバイスいただきましてありがとうございました。 (ひろ) ---- 一度、お礼を申し上げたんですが、追加の要請がきましたので再度相談させてください。 同じ表のA列にある「20091002」の形式で入力されている日付を基準に年齢を算出しろ                                    と命令されました(泣) アドバイスいただいた計算式をどのように変更すればよいのでしょうか? 助けてください。お願いします。 (ひろ) ---- せっかく皆様から回答をいただいているのですから ただ「聞く」だけではなくご自分で応用してみましょう。 20091002 をシリアル値(日付データ)に変換すればいいのです。 和暦よりは変換しやすいはずです。 (えくせる青年)2009/11/10 15:35 ---- 例えばRさんの回答を拝借して =DATEDIF(MID("T S H",E2-2,1)&TEXT(F2,"0-00-00"),"2009/10/31","y") ^^^^^^^^^^^^^^^^^^^^ で何をしているか理解されてますか? えくせる青年さんも書かれてますが、少しは努力しません? (とおりすがり) ---- えくせる青年 さん 横から済みません。 応用は無理と踏んでおります。お許しを m(__)m >アドバイスいただいた計算式 どの計算式を採用したのですか? (半平太) 2009/11/10 15:41 ---- 半平太さんが謝罪する必要はございません。 かえって回答に気を使わせてしまって申し訳ありません。 質問者さんへ ヒントだけ 数値のデータを数式でシリアル値に変換する方法 A1に 20091002 のように入力している場合 =TEXT(A1,"0-00-00")*1 ちなみにおまけですが 区切り位置指定ウィザードを使用すれば A列のデータそのものをシリアル値に変換することが可能です。 (えくせる青年)2009/11/10 15:57 ---- みなさんからいただいたアドバイスやヒントのおかげをもって、 目的を達成することができました。 以下の通りとしましたの報告します。ありがとうございました。 =DATEDIF(MID("T S H",F2-2,1)&TEXT(G2,"0-00-00"),TEXT(A2,"0-00-00")*1,"y") 今後も本HPを活用させていただきます。 (ひろ)