【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

こんにちは。エクセルでの人数計算についてお伺いさせてください。

現在、AC列に「昭和48年」という形で生年が記載されていて
AB列に年齢を記載したいと考えています。
「=DATEDIF(AC1,TODAY(),"Y")」という関数を入れたのですが
#VALUE!と表示されてしまいました。
「昭和48年」という表記を変えなくてはいけないかなと思ったのですが
セルの書式設定で西暦に直そうとしてもうまくできなかったので
良い方法をご教示頂ければ幸いです。

どうぞよろしくお願いします。

A 回答 (3件)

#1さんのご意見に賛成です。


DATEDIF関数に限らず日付時刻に関する関数は、基本的にシリアル値に対して有効な関数です。
(一部の日付時刻型関数を除く)
文字で書かれた年月日ではエラーになります。
シリアル値は1900年1月1日からの累計日数を表す「数値」です。
2008/4/12なら、35990という数値です。
従って、ご質問の「昭和48年」が文字なら何らかの方法で変換しなければなりません。

=DATEDIF(DATEVALUE(AC1&"1月1日"),TODAY(),"Y")
でいかがでしょう。
    • good
    • 0
この回答へのお礼

ご教示をいただき、ありがとうございました。
2番目の方に頂いた数式をDATEDIFに組み合わせると、このような数式になるのですね。こちらで解決ができました。どうもありがとうございました。

お礼日時:2008/04/12 17:56

kuma3fさんと同じ発想ですが、数式は↓でいかがでしょうか?



=(AC1&"1月1日")*1

参考URL:http://www2.odn.ne.jp/excel/waza/function.html#S …
    • good
    • 0
この回答へのお礼

ありがとうございました!こちらの数式でも西暦に直すことが出来ました。

お礼日時:2008/04/12 17:54

違っていましたらすみませんが、「昭和48年」が文字列入力されているので「=DATEDIF(AC1,TODAY(),"Y")」が#VALUE!になると思われます。


もし、和暦の年号が昭和と平成だけであれば次の関数で「昭和48年」を変換してみてください。
ちょっと複雑な関数になってしまいましたが文字列関数で数字を取り出し、年号が昭和ならS、平成ならH、月日を1/1で結合させています。
AC列を直接変換することはできませんので空き列(例えばAD列)に次の関数を貼り付けてみてください。

=VALUE(IF(LEFT(AC1,2)="昭和","S","H")&LEFT(RIGHT(AC1,LEN(AC1)-2),LEN(RIGHT(AC1,LEN(AC1)-2))-1)&"/1/1")

「=DATEDIF(AC1,TODAY(),"Y")」はAC1を空きセル(例えばAD1)に変更して確認してみてください。(「=DATEDIF(AD1,TODAY(),"Y")」)
    • good
    • 0
この回答へのお礼

さっそくご回答をいただき、ありがとうございました!
頂いた数式で、西暦に変換することができました。
自分では絶対に作れなかった数式なので……
ご教示ありがとうございます。

お礼日時:2008/04/12 17:53

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