重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

エクセルでの和暦から西暦への変換について



お願いします。
列に、昭和と平成が入り混じって入力してあります。
昭和50年8月30日生まれであれば、500830。
平成2年12月4日生まれであれば、021204。

この、6桁の数字を西暦0000/00/00と変えたいのですが、どのような方法があるのか教えて頂きたいです。

又、その西暦を使用して、違う列に年齢が出るようにしたいのです。

よろしくお願いいたします。

例 550828→1980/8/28→38歳

質問者からの補足コメント

  • すみません。自分が早生まれなので年齢間違いです。

    ありがとうございます!
    明日再チャレンジしてみたいと思います!

      補足日時:2017/09/16 22:31

A 回答 (4件)

裏技を使いました。

数字を分解する必要はありません。

A1:500830
=DATEDIF(DATEVALUE(IF(LEFT(TEXT(A1,"000000"),2)*1>29,"S","H")&TEXT(A1*1,"00!/00!/00")),NOW()+1,"Y")

ポイント:*1>29,
平成30の生年月日は存在しないので、昭和にしました。

うまくない場合は、
DATEDIF(DATEVALUE("S" & TEXT(A1*1,"00!/00!/00")),NOW()+1,"Y")
としても可能です。マニュアルですが、S-昭和, H-平成, M-明治を入れます。

問題はここ:NOW()+1
法律的には誕生日の前日午後12時に1歳年齢が加算されるというそうで、+1 にするそうです。つまり、4月1日生まれは早生まれになるわけです。

ひとつ条件があるのは、数字は、数値にしていることだけです。書式文字列(@)にしてしまうと、うまく行きません。逆に、文字列接頭辞(')を使っていたら、最初のLEFT(TEXT(A1,...),2)が不要です。
    • good
    • 0
この回答へのお礼

助かりました!


ありがとうございました!

お礼日時:2017/09/17 11:22

》 平成2年12月4日生まれであれば、021204


「021204」は数値でなく、文字列で入力されているのですか?
昭和生まれの「500830」も文字列ですか?
昭和2年12月4日生まれは存在しないのですか?
    • good
    • 0

また面倒な…


文字列を分解して計算するしかないですよ。
文字を左から2文字抜き取ってそれを「年」として置き換えます。
ただし、昭和17年生まれの人や昭和5年生まれの人をどう判断するかという問題があります。
 「いやいや、そんなお年寄りいないから」
というなら単純にIF関数で割り振ればいいでしょう。

50歳以上の人がいないなら昭和47を基準にして、47よりも小さければ平成、47以上なら昭和として扱えばよいということなので、
あとは文字列をシリアル値に直して日付にして表示形式を指定してしまえばよい。

 =TEXT(IF(VALUE(MID(A1,1,2))<47,DATEVALUE("平成"&MID(A1,1,2)&"年"&MID(A1,3,2)&"月"&MID(A1,5,2)&"日"),DATEVALUE("昭和"&MID(A1,1,2)&"年"&MID(A1,3,2)&"月"&MID(A1,5,2)&"日")),"yyyy/mm/dd")

こんな感じ。

・・・
長くて何しているか分からないだろ。
数式に使用している関数それぞれについて、ちゃんと調べて理解したうえで使いましょう。
 TEXT
 IF
 VALUE
 MID
 DATEVALUE
使用しているのはたったこれだけです。
    • good
    • 0

関数を使って…



[A1]=500830
[B1]=DATEVALUE(LEFT(A1,2)+IF(LEFT(A1,2)*1>29,1925,1988)&"/"&MID(A1,3,2)&"/"&RIGHT(A1,2))
[C1]=DATEDIF(B1,TODAY(),"Y")&"歳"

頭2桁が29までなら、平成 → +1988したら西暦
頭2桁が30以上なら、昭和 → +1925したら西暦

と扱っています。
以降、1行目のセルをコピーで。

> 例 550828→1980/8/28→38歳

これ、37歳ではなく38歳にしたい??
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!