• ベストアンサー

エクセルで年齢を出したい。

エクセルA1列に生年月日があり、B1例にその年の年齢をだしたいです。 ただし、A1には、 1970年1月1日とか、 1970/1/1とか、 1970/01/01とか 1970年1月1日 とかが混ざっている状態です。 このような状態で、現時点の年齢を出したいのですが、 その方法がございましたら、伝授ください。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.7

>1970年 01月1日のように、年と月との間にスペースのある手書きが書かれた文字が スペースを削除する必要があります。 A列の生年月日が入力されているセルを選択 → 編集 → 置換 → 検索する文字列にスペース → 置換後の文字列は入力しない → すべて置換 以上でスペースが削除されます。 削除後文字列があれば回答番号:No.5さんの方法でシリアル値に変更します。 その後に皆さんの回答の  =IF(A1="","",DATEDIF(A1,TODAY(),"Y")) で年齢計算

coco-chanel
質問者

お礼

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

その他の回答 (9)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.10

No.5です。 >どこか適当なセルに「1」をいれた上に、「1970年1月1日」をコピーして、「形式を選択して貼り付けであっていますか? 違います。1をコピーして、「1970年1月1日」に「形式を選択して貼り付け」です。そこで、貼り付け:値、演算:乗算で、貼り付けてみてください。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.9

あるいは次のような式をB1セルに入力して下方にオートフィルドラッグしてはいかがでしょう。 =IF(A1="","",YEAR(TODAY())-YEAR(SUBSTITUTE(A1," ")*1)) または =IF(A1="","",DATEDIF(SUBSTITUTE(A1," ")*1,TODAY(),"Y")) なお,3番目に出てくる""の間には全角のスペースを入れます。

  • darter
  • ベストアンサー率48% (12/25)
回答No.8

エクセルが日付だと判断できる文字列であればそれなりに処理してくれるんですが、”1970年 01月1日”のようにスペースがあると、日付とは判断してくれないようですね。 他にうまく判断してくれないパターンはありますか? ないのであれば、一手間増えますがA列に対して文字列置換で空白文字を除去してやればOKかと思います。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

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

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.5

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

coco-chanel
質問者

補足

ありがとうございます。 どこか適当なセルに「1」をいれた上に、「1970年1月1日」をコピーして、「形式を選択して貼り付けであっていますか? それなら、「1」のままで日付はでてこず・・・なのですが。 やり方が間違っていますか?

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

B列での年齢が現在の年における年齢でしたらB1セルに次の式を入力し下方にオートフィルドラッグします。 =IF(A1="","",YEAR(TODAY())-YEAR(A1)) なお、A列に入力されている生年月日がいろいろの表示形式になっているようですが、数式バー上では1970/1/1のように表示されるはずです。特に問題はないでしょう。

coco-chanel
質問者

補足

他の方の補足にも書かせていただきましたが、 このような式で出てくる年齢もあるのですが、 やはり、形式?によってエラーになるものがあります。 1970年 01月1日のように、年と月との間にスペースのある手書きが書かれた文字が 1970年1月1日とか、 1970/1/1とか、 1970/01/01とか 1970年1月1日 のものとは異なるのでしょうか?

  • darter
  • ベストアンサー率48% (12/25)
回答No.3

■年齢の算出 年齢の算出にはDATEDIFという関数が使えます。 以下のように使います。 =DATEDIF(生年月日, 現年月日, "Y") ■混在した年月日表示について エクセルが認識できる年月日表示形式であれば、特に気にせずにそのまま使えるはずです。

coco-chanel
質問者

補足

=DATEDIF(生年月日, 現年月日, "Y")の式でやってみましたが、 やはり答えの出ないものがありました。 A1の形式を揃えないと無理なのでしょうか?

  • dr-9
  • ベストアンサー率47% (24/51)
回答No.2

次の式で良いと思います。 (IFは、A1が空欄であった場合に計算値に変な値が出ないようにする為の措置です。) =IF(A1="","",DATEDIF(A1,TODAY(),"Y"))

coco-chanel
質問者

補足

やってみたのですが、答えは#VALUE!でした。。 ちなみにやってみたのが、下記のような生年月日だったのですが、 年と月の間にスペースが出来てしまっているのがまずいのでしょうか?? 1970年 01月1日

回答No.1

A1は生年月日の表示形式が違うだけですから問題ありません。 2003ですと必要なセルをドラッグ、範囲選択し→書式→セル→表示形式→「日付」で統一できます。 A列1行から生年月日が入っているのでしたら年齢計算はB1に: =DATEDIF(A1,TODAY(),"Y") と入力します。 2行目以下は上の行の式をコピーします。

coco-chanel
質問者

補足

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

関連するQ&A