牛、豚、鶏、どれか一つ食べられなくなるとしたら?

簡単だとは思うのですが、一押しが足りず?わからずで、皆様に教えていただきたいです。

エクセルで作業をしています。

C4セルに「入社年月」が入っており(“2009年4月”という表示)、M4セルに本日までの「勤続年数」を“3年”というように表示させる関数を入れたいのですが、どのような関数を入れたらよいのでしょうか?

皆様、どうぞお力を貸してください。
よろしくお願いいたします。

A 回答 (2件)

まず回答する前に状況の確認で。



>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関数で計算します。

この回答への補足

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

補足日時:2012/05/03 09:55
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/05/03 09:55

これはなかなか、やっかいな問題でもあります。

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)&"か月"
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/05/03 09:37

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