• ベストアンサー

エクセル 年数 計算

エクセルで年数を計算したいのですが、以下の式で#NUMと出ます。 いったいなにが悪いのでしょうか? =DATEDIF(YEAR(TODAY()),YEAR(H24),"y") H24には1983/1/4と入っています。

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

  • ベストアンサー
  • chonami
  • ベストアンサー率43% (448/1036)
回答No.1

DATEDIF関数は引数にシリアル値を指定します。 最後の"Y"で年数を出す事をあらわしていますので、YEAR関数でわざわざ年をださなくてもいいです。 あと順番が逆です。 =DATEDIF(H24,TODAY(),"Y") で如何でしょうか? ただし、DATEDIF関数の戻り値は文字列になりますのでご注意を。

buc6t
質問者

お礼

わかりました。ありがとうございます。 勘違いしてました

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

DATEDIF関数の解説書の解説を読め。 DATEDIF関数の引数の日付について思い違いをしている。 日付そのままを第1と第2引数に書く。そして第3引数で、YやMなどを指定する。 Y、Mでは日数の要素も考慮したものになっている。 プログラムにするのは別にして、どういう計算になるか、記号や文章で「書いてみて、考えてみれば、理解に役立つかも。 ーー YEAR部分だけで計算するやり方なら、両者を西暦にそろえ、前後を考えて、現在年から引き算したら仕舞いでは。

buc6t
質問者

お礼

回答ありがとうございます 言葉がきついけど優しいんですね

全文を見る
すると、全ての回答が全文表示されます。
  • NYAx2
  • ベストアンサー率27% (3/11)
回答No.4

DATDIF(開始日終了日,単位)は、開始日<終了日でなければなりません。 終了日が1983/1/4では、開始日(今日)>終了日となるため、ダメです。 =DATEDIF(H24,TODAY(),"Y") または =YEAR(TODAY())-YEAR(H24) であれば、ほしいデータが得られると思いますが、どうでしょうか?

buc6t
質問者

お礼

引数の理解が不足していましたね。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

YEAR関数で計算するなら,わざわざDATEDIF関数を使わず =YEAR(TODAY())-YEAR(H24) のように「年を引き算する」ので十分です。 DATEDIF関数を使うなら =DATEDIF(H24,TODAY(),"Y") とします。 =IF(H24="","",DATEDIF(H24,TODAY(),"Y")) ぐらいにしておくのが一般的です。

buc6t
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

>年数を計算したいのですが・・・ =DATEDIF(H24,TODAY(),"y") ← こういう式になりますね

buc6t
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルで在籍年数を詳しく出すには

    エクセルで社員管理で在籍年数を詳しく出したいのですが、 =DATEDIF(F2,TODAY(),"Y")  で年数を出していますが、何年何ヶ月まで出すにはどうすればいいのですか?? 教えてください。

  • エクセルで勤続年数を計算

    エクセルを使って勤続年数を計算しようと思っています。 入社年月日を入力し、TODAYで今日までの勤続年数を計算しようと思ったのですが、うまくいきません。 どのように入力をして、どのような式にしたらよいでしょうか。 勤続年数は、できれば年と月まででればいいなと思っています。日にちまではいりません。 どなたかわかる方教えてください。      1      2      3   A 入社年月日        勤続年数 B H15.8.1   TODAY   ●年●月

  • エクセルで年数計算

    A1に1925/3/27、 B1に2002/10/17という年月日が入力されていて、この間の年数を計算するために C1に  =DATEDIF(A1,B1,"y")  という式を入力したところ C1は 1900/3/17 という値になってしまいます。 何がまずいのでしょうか。

  • エクセルで勤続年数を計算しているのですが・・

    いつもお世話になっております。 今回はエクセルの計算式について、ご指導の程お願い致します。 勤続年数の計算をexcel2007で管理したいと思っています。 例えば2011/12/21入社で、2012/3/20退社とします。 今までの計算からしますと、「0年3か月と0日」の勤続年数としたいのですが DATEDIFで計算しましたところ、「2か月と28日」となりました。 下記は現在の計算式です。 「=DATEDIF(A6,B6,"Y")&”年”&DATEDIF(A6,B6,"YM")&"ケ月"&(DATEDIF(A6,B6,"MD"))&"日"」 極端な話ですが、1/1入社で1/2退社ですと勤続年数は「2日」としていますので 単純に計算式に「+1」を加えると「2か月と29日」でカレンダーで勘定したところ正解ではあるのですが、「3か月と0日」にしたいと思っています。 基本的な考え方に問題があるのでしょうか? 色々調べてみたのですが、解決に至らず困っております。 ご指導の程、宜しくお願い致します。

  • エクセルで年齢の計算の仕方

    エクセルで年齢を計算するのにDATEDIF(A1,today(),"Y")が良く使われますが、 法律上正確に考えるとDATEDIF(A1,today()+1,"Y")が正しいのではないでしょうか。 このようなことを解説したもの(サイト)が見つからないので質問しました。 ちなみに、年齢加算は法律上、誕生日の前日となっています。 それに基づくとDATEDIF(A1,today()+1,"Y")だと思いますが、この書き方だと計算結果に何か問題が発生するでしょうか。

  • エクセルで経過年数の平均

    エクセルで、DATEDIF(A1,B1,"Y")&"年"&DATEDIF(A1,B1,"YM")&"ヶ月"と関数を使い、経過年数&月数を「○年○ヶ月」と計算するデータを作りました。 さらに、計算された経過年数&月数の平均を求めたいのですが上手くいきません。 どうすればいいでしょうか?よろしくお願いします。

  • 経験年数表示○年○ヶ月 式はどのように

    エクセルで経験年数を表示したいのです。 本日で何年何ヶ月経過を示したいです。 Windows XP エクセル2003 使用です。          雇入年月日 セル L12に   H23.2.4          経験年数 セル L13に   1年4ヶ月 としたいのです。 経験年数が半年の場合は L13 に 6ヶ月  ×0年6ヶ月 経験年数が1年の場合は  L13に  1年   ×1年0ヶ月 いまL13の式には =DATEDIF(L12,TODAY(),"Y")&"年"&DATEDIF(L12,TODAY(),"YM")&"ヶ月" と入れてあるのですが。。。 1年0ヶ月 と表示されてまして・・・ 改善式を教えて頂きたいです。 宜しくお願いします。

  • Excelで小数点以下1桁の年数を表示したい

    Excelで年数の計算をしています。 A1に1997/10/27,B1に2006/3/28,C1に「=DATEDIF(A1,B1,"Y")&"年"&DATEDIF(A1,B1,"YM")&"ヶ月"」を入力して「8年5ヶ月」と表示されます。 今回,D1に年数を小数点以下1桁で表示したいのですが,うまくいきません。計算すると8.4か8.5年だと思うのですが。 計算式を教えてください。 よろしくお願いします。

  • 勤続年数の平均を求めたい時の関数

    エクセルで会社の従業員の勤続年数とその平均を求めたいです。 勤続年数のセルに =DATEDIF(A1,TODAY(),"y")&"年"&DATEDIF(A1,TODAY(),"ym")&"ケ月" といれて勤続年数を出してます。 それで次に従業員の勤続年数の平均を出したいのですが、AVERAGEを使うとエラー#DIV/0!が出ます。 どうすれば勤続年数とその平均が求められますか? どんな方法でも良いので教えて下さい!!非常に困ってます(ー_ー)!!

  • エクセルで年齢式がコピーできない

    エクセルで名簿を作っています。 最初の一人の生年月日と今日の日付から満年齢を出せたまではいいのですが、全員分の満年齢を出そうとして式をドラッグしてコピーしようとしたところ、#VALUE!と#NUM!が交互に出て、年齢が表示されません。 E2セルに今日の日付(=TODAY())、C4に最初の人の生年月日を入力しています。 最初の人の年齢は=DATEDIF(C4,E2,"Y")の式で正常に表示されているのですが、この式をドラッグでコピーすると、以下、#VALUE!と#NUM!が交互に表示されます。コピーされた式をひとつずつ調べると、 =DATEDIF(C4,E2,"Y") ←正常に表示 =DATEDIF(C5,E3,"Y") ←#VALUE!と表示 =DATEDIF(C6,E4,"Y") ←#NUM!と表示 =DATEDIF(C7,E5,"Y") ←#VALUE!と表示 =DATEDIF(C8,E6,"Y") ←#NUM!と表示 … といった感じで続いていて、要は今日の日付を入力しているE2セルを正しく参照していないようです。これを、 =DATEDIF(C4,E2,"Y")  =DATEDIF(C5,E2,"Y")  =DATEDIF(C6,E2,"Y")  =DATEDIF(C7,E2,"Y")  =DATEDIF(C8,E2,"Y")  のように、常にE2を参照させる方法があるはずだと思うのですが、どうすればいいでしょうか? よろしくお願いします。

専門家に質問してみよう