• ベストアンサー

勤続年数を関数で求めたい

簡単だとは思うのですが、一押しが足りず?わからずで、皆様に教えていただきたいです。 エクセルで作業をしています。 C4セルに「入社年月」が入っており(“2009年4月”という表示)、M4セルに本日までの「勤続年数」を“3年”というように表示させる関数を入れたいのですが、どのような関数を入れたらよいのでしょうか? 皆様、どうぞお力を貸してください。 よろしくお願いいたします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

まず回答する前に状況の確認で。 >C4セルに「入社年月」が入っており(“2009年4月”という表示)、 もう一度エクセルを実際に起動し、どっかの空っぽセルに 2009年4月 と実際に記入してみます。 すると、数式バーには「2009/4/1」と記入されていて、セルには2009年4月と表示が出た状態になります。 さて。 あなたのC4セル(およびその前後のセル)は、 1)数式バーを見ても、確かに「2009年4月」と文字通りに記入されている 2)数式バーには2009/4/1が記入されていて、セルだけ「2009年4月」の表示になっている どっちですか? また、前後のセルは間違いなくどちらかに統一できていますか? とりあえずご相談の書き振りを信用して、確かに数式バーにも「2009年4月」と文字通りに記入されている前提で回答すると、 =DATEDIF(C4&"1日",TODAY(),"y") のように計算すればよいです。 数式バーの中は実際には2009/4/1だった場合は、そのままDATEDIF関数で計算します。

burakky
質問者

お礼

シンプルでわかりやすかったです。 ありがとうございました!

burakky
質問者

補足

数式バーには2009/4/1と表示されていました。 today() で、できました!

その他の回答 (1)

回答No.2

これはなかなか、やっかいな問題でもあります。DATEDIF関数というのがあるよ、と言いたいところなのですが、この関数は、正しく計算しないケースが数多く存在するのが困りものです。どんな場合かというと、「よく分かりません」。かなり複雑な不具合で、出現の規則性が見出せないのです。年や月の計算に限って使えば大丈夫との情報もありますが、どこまで信用したものか。バージョンによっても状況が異なるようです。Microsoftも、非公式なものとして使用を推奨しておらず、この関数はヘルプもほとんど用意されていません。 で、代わりにどうするかといえば、基本的には引き算をし、1年の日数で割ればいいだけです。A1、B1に日付が入力されていて、A1はB1の未来だとします。 期間内に2月29日を含まない場合の計算 =(a1-b1)/365 期間内に含まれる2月29日の日数がC1に入力されている場合の計算例 =(a1-b1-c1)/365 期間内に含まれる2月29日の日数が不明な場合の計算例  ※年数の「概数」を算出 =(a1-b1)/365.25 「a1」を「today()」と書き換えれば、B1セルの日から今日までの年数となります。 年数は、いずれの式も、小数で算出されます。小数点以下を切り捨てたい場合は、更にINT関数などで処理してください。 質問者さんがどのような答えを求めているかによって、式もいろいろあり得るともいえます。例えば、入社直後の年数を0とするか1とするかによっても、式の修正が必要でしょう。 それから、「○○年△△か月」という形式で勤続年数を求めたいという場合は、次の式もお勧めです。 =(year(a1)-year(b1)-(month(a1)<month(b1)))&"年"&mod(month(a1)-month(b1),12)&"か月"

burakky
質問者

お礼

なるほど。DATEIF関数は、正確でないかもしれないんですね。 ご丁寧にありがとうございます! 関数、深いですね~。

関連するQ&A