プロが教えるわが家の防犯対策術!

エクセルA1列に生年月日があり、B1例にその年の年齢をだしたいです。

ただし、A1には、
1970年1月1日とか、
1970/1/1とか、
1970/01/01とか
1970年1月1日
とかが混ざっている状態です。

このような状態で、現時点の年齢を出したいのですが、
その方法がございましたら、伝授ください。
宜しくお願いします。

A 回答 (10件)

>1970年 01月1日のように、年と月との間にスペースのある手書きが書かれた文字が


スペースを削除する必要があります。
A列の生年月日が入力されているセルを選択 → 編集 → 置換 → 検索する文字列にスペース → 置換後の文字列は入力しない → すべて置換
以上でスペースが削除されます。
削除後文字列があれば回答番号:No.5さんの方法でシリアル値に変更します。
その後に皆さんの回答の 
=IF(A1="","",DATEDIF(A1,TODAY(),"Y"))
で年齢計算
    • good
    • 0
この回答へのお礼

長らく作業に没頭しており、お礼がおそくなりまして申し訳ございませんでした。
無事、いただいたアドバイスを元に作業が完成することが出来、
大変助かりました。
gyouda1114さま、その他のみなさまの回答に感謝しております。
ありがとうございました。

お礼日時:2009/10/08 08:52

No.5です。


>どこか適当なセルに「1」をいれた上に、「1970年1月1日」をコピーして、「形式を選択して貼り付けであっていますか?

違います。1をコピーして、「1970年1月1日」に「形式を選択して貼り付け」です。そこで、貼り付け:値、演算:乗算で、貼り付けてみてください。
    • good
    • 0

あるいは次のような式をB1セルに入力して下方にオートフィルドラッグしてはいかがでしょう。


=IF(A1="","",YEAR(TODAY())-YEAR(SUBSTITUTE(A1," ")*1))
または
=IF(A1="","",DATEDIF(SUBSTITUTE(A1," ")*1,TODAY(),"Y"))
なお,3番目に出てくる""の間には全角のスペースを入れます。
    • good
    • 0

エクセルが日付だと判断できる文字列であればそれなりに処理してくれるんですが、”1970年 01月1日”のようにスペースがあると、日付とは判断してくれないようですね。


他にうまく判断してくれないパターンはありますか?
ないのであれば、一手間増えますがA列に対して文字列置換で空白文字を除去してやればOKかと思います。
    • good
    • 0

No4です。


おそらく生年月日が文字列になっているものがありますね。
No4の形式での年齢計算でしたら次の式をB1セルに入力し下方にオートフィルドラッグします。
=IF(A1="","",YEAR(TODAY())-IF(ISERROR(FIND("年",A1)),LEFT(A1,FIND("/",A1)-1)*1,LEFT(A1,FIND("年",A1)-1)*1))
    • good
    • 0

年齢の出し方ではなく、生年月日を日付のシリアル値にする方法を……。



恐らく、文字列として入っているのでしょう。
セルの書式を日付にしても駄目なら、そのまま次のことを試してみてください。
どこか適当なセルに「1」と、入力し、コピーします。次に「1970年1月1日」などが入っている範囲を選択し、「形式を選択して貼り付け」。貼り付け:値、演算:乗算で、貼り付けてみてください。文字列が日付のシリアル値になると思います。

この回答への補足

ありがとうございます。

どこか適当なセルに「1」をいれた上に、「1970年1月1日」をコピーして、「形式を選択して貼り付けであっていますか?

それなら、「1」のままで日付はでてこず・・・なのですが。
やり方が間違っていますか?

補足日時:2009/09/15 17:26
    • good
    • 0

B列での年齢が現在の年における年齢でしたらB1セルに次の式を入力し下方にオートフィルドラッグします。


=IF(A1="","",YEAR(TODAY())-YEAR(A1))
なお、A列に入力されている生年月日がいろいろの表示形式になっているようですが、数式バー上では1970/1/1のように表示されるはずです。特に問題はないでしょう。

この回答への補足

他の方の補足にも書かせていただきましたが、
このような式で出てくる年齢もあるのですが、
やはり、形式?によってエラーになるものがあります。

1970年 01月1日のように、年と月との間にスペースのある手書きが書かれた文字が
1970年1月1日とか、
1970/1/1とか、
1970/01/01とか
1970年1月1日
のものとは異なるのでしょうか?

補足日時:2009/09/15 16:55
    • good
    • 0

■年齢の算出


年齢の算出にはDATEDIFという関数が使えます。
以下のように使います。
=DATEDIF(生年月日, 現年月日, "Y")

■混在した年月日表示について
エクセルが認識できる年月日表示形式であれば、特に気にせずにそのまま使えるはずです。

この回答への補足

=DATEDIF(生年月日, 現年月日, "Y")の式でやってみましたが、
やはり答えの出ないものがありました。

A1の形式を揃えないと無理なのでしょうか?

補足日時:2009/09/15 16:53
    • good
    • 0

次の式で良いと思います。


(IFは、A1が空欄であった場合に計算値に変な値が出ないようにする為の措置です。)

=IF(A1="","",DATEDIF(A1,TODAY(),"Y"))

この回答への補足

やってみたのですが、答えは#VALUE!でした。。

ちなみにやってみたのが、下記のような生年月日だったのですが、
年と月の間にスペースが出来てしまっているのがまずいのでしょうか??

1970年 01月1日

補足日時:2009/09/15 16:50
    • good
    • 0

A1は生年月日の表示形式が違うだけですから問題ありません。


2003ですと必要なセルをドラッグ、範囲選択し→書式→セル→表示形式→「日付」で統一できます。

A列1行から生年月日が入っているのでしたら年齢計算はB1に:
=DATEDIF(A1,TODAY(),"Y")
と入力します。
2行目以下は上の行の式をコピーします。

この回答への補足

ご回答ありがとうございます。

A1の生年月日は、手入力したものをエクセルにエクスポートしているもので、表示形式→「日付」で統一できないのです。
まずはそこを統一させる方法があればいいのですが、
その方法もわからず・・・。

現在はそれで困っています。

補足日時:2009/09/15 16:47
    • good
    • 0

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