• ベストアンサー

勤続年数の出し方で詰まっています・・・。

勤続年数を書類作成日から求めるっていう数式で、 DATEDIF関数を使って H3  =書類作成日(yyyy/mm/dd) F27 =入社年月日(yyyy/mm/dd) F28 =勤続年数 (○年 と表示したい) *H3,F27、いずれかが空白の場合はF28は空白表示 if文でネストすると F28=if($H$3="","",if(F27="","",DATEDIF(F27,$H$3,"y")&"年")) でOK・・・なのですが、勤続年数が1年未満だと「0年」と表示されて しまい、じゃあ、「▲ヶ月」で表示・・・と思ったら、 ExcelのヘルプでDATEDIF(F27,$H$3,"ym")では だせないみたいです。 どなたか「▲ヶ月」と表示が出来る方法を教えて 頂けませんか?仕事の書類なので、とりあえずは 「▲ヶ月」の従業員はベタ打ちにしてしまってますが、 1年後にこの書類を開きH3の日付を打ち変えれば 「1年」と表示がなると助かる、という書類なので。 よろしくお願いします。

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

  • ベストアンサー
回答No.1

こんばんは。 >ExcelのヘルプでDATEDIF(F27,$H$3,"ym")では >だせないみたいです。 ↑の意味がよくわからないのですが‥ F28セルに↓でどうでしょうか? ----------------------------- =IF(OR($H$3="",F27=""),"",IF(DATEDIF(F27,$H$3,"Y")>0,DATEDIF(F27,$H$3,"Y")&"年",DATEDIF(F27,$H$3,"YM")&"ヶ月")) ------------------------------------

tmknok
質問者

お礼

ありがとうございます。F27(入社年月日)がブランク だとしてもこれなら大丈夫ですね。 最初に、DATEDIF(F27,$H$3,"YM")&"ヶ月" を入れてはいたのですが、「1ヶ月」でも「1ヶ月」、 「4ヶ月」でも「1ヶ月」と表示されていたのです。。。 セルの設定が何かいけなかったのかしら?なぞです。 ともあれ、うまくいきましたのでありがとうございます!

その他の回答 (3)

  • narino
  • ベストアンサー率40% (2/5)
回答No.4

私は 簡単に、IF関数で作ってみました。 どうでしょうか。 F28=IF(F27="","",IF((DATEDIF(F27,H3,"y"))>1,DATEDIF(F27,H3,"y")&"年",DATEDIF(F27,H3,"ym")&"ヶ月")) 答えが1年以上ならその年数を、 そうでなければ○ヶ月を表示する、という命令です。 また、usami33さんがおっしゃるように、 その日の時点の年月を知りたい場合は、 h3のところを  ↓ today() 又は now() でもOKですね。

tmknok
質問者

お礼

>F28=IF(F27="","",IF((DATEDIF(F27,H3,"y"))>1,DATEDIF(F27,H3,"y")&"年",DATEDIF(F27,H3,"ym")&"ヶ月")) ですと、 1年5ヶ月→5ヶ月 と表示 0年7ヶ月→7ヶ月 と表示 されてしまいました。 narino様の数式を見つつ、自分で数式を変えてみたら IF(F27="","",IF(DATEDIF(F27,H3,"y")>1,DATEDIF(F27,H3,"y")&"年",DATEDIF(F27,H3,"ym")&"ヶ月")) でうまくいくようです。ありがとうございました。

tmknok
質問者

補足

すみません、 IF(F27="","",IF(DATEDIF(F27,H3,"y")>=1,DATEDIF(F27,H3,"y")&"年",DATEDIF(F27,H3,"ym")&"ヶ月")) でした。

  • fly_moon
  • ベストアンサー率20% (213/1046)
回答No.3

tmknokさんの関数にもう一つネストさせた形です。 F28=IF(ISERROR(DATEDIF(E27,$H$3,"y")),"",IF(DATEDIF(F27,$H$3,"y")<1,DATEDIF(F27,$H$3,"m")& "ヶ月",DATEDIF(F27,$H$3,"y")&"年")) F28=if($H$3="","",if(F27="","", の部分はエラー回避だと思うのですが、 ISERROR(DATEDIF(E27,$H$3,"y") を使えば、DATEDIF()関数がエラーかどうか判別してくれます。 エラーのときはTrueがかえります。 これを利用すれば、少し簡単になります。

tmknok
質問者

お礼

ISERROR関数は名前しかしらなかったです。今までずっと if(セル="","",数式)という風に書いてました。 これまた勉強になります。 勤続年数が1年以上なら「○年」表示、1年未満なら「▲ヶ月表示」ばっちりです!ありがとうございました。 ただ、F27(入社年月日)がブランクの場合 数式をコピー していると「105年」という表示になってしまいます。 F27を0と認識してしまっているのでしょうか?

  • usami33
  • ベストアンサー率36% (808/2210)
回答No.2

これでどうですか =TEXT(DATEDIF(F27,H3,"y"),"0年;;""""")&TEXT(DATEDIF(F27,H3,"ym"),"0ヶ月;;""""") それから,もともとのH3に =TODAY() と記載しておくと、開いた日になりますよ

tmknok
質問者

お礼

TEXT関数!目からうろこでした。 "0年;;""""" の部分はEXCELのヘルプでは 見当たらなかったのですが、セル書式のユーザー定義 の書き方と同じ、なんでしょうね。関数もまだまだ 知らない事があるので、勉強になります。 ただ、残念な事に、usami33様の記述だと「○年▲ヶ月」 と表記されてしまうので、今回のケースは「○年」または 1年未満は「▲ヶ月」という表記が良いようです。 ありがとうございました。 >TODAY() これは私もそうしておきたいのですが、提出する先に よって、作成日がまちまちで、関数を消されるなら 各自で入力、の方向でお願いするほうが(施主が記入する ケースもあり提出時はブランクの場合もあるようです) 良さそうなのです。

関連するQ&A

  • エクセルで勤続年数をだす。

    エクセルで勤続年数を出す数式を作ったのですが セルにデータが無い場合 114年1か月19日などのマヌケな値が出ます。 IF(U1="",DATEDIF(T1,$AP$1,"Y")&"年"&DATEDIF(T1,$AP$1,"YM")&"ヶ月"&DATEDIF(T1,$AP$1,"MD")&"日",DATEDIF(T1,U1,"Y")&"年"&DATEDIF(T1,U1,"YM")&"ヶ月"&DATEDIF(T1,U1,"MD")&"日") 入社日T1、 退社日U1、 今日の日付AP1 入社日T1が空白の場合 勤続年数も0か、空白にしたいのですが、 あと一歩わかりません どうか教えてください。

  • 勤続年数の計算式を教えてください

    また、お世話になります。 Excelで名簿を作成したのですが、今現在で勤続年数を、何年何ヶ月とだしたいのです。今はDATEDIFで何年まではでるのですが、例えばH201.1入社で今日現在で2年3ヶ月と出るようにしたいのです。(2.3)でも良いのですが。 よろしくお願いします。

  • 勤続年数の平均の出し方を教えて下さい。

    エクセルで勤続年数の表を作成しました。 左のセルから 名前:生年月日: 年齢(=DATEDIF(E3,$I$1,"Y")&"歳"&DATEDIF(E3,$I$1,"YM")&"ヶ月"):入職日:勤続年数(=DATEDIF(G3,$I$1,"Y")&"年"&DATEDIF(G3,$I$1,"YM")&"ヶ月") という表です。 その中で勤続年数の平均を出したいのですが、 勤続年数を足して、人数で割るという形では駄目なようです・・・。 何か方法はないでしょうか? よろしくお願いします。

  • エクセル関数で勤続年数を求めた時の表示

    社員勤続年数を以下のように求めました。 =DATEDIF(A1,TODAY(),"D") 「yy"年"mm"ヵ月"dd"日"」の表示にする。 すると、2年経過した社員など、『1年12ヶ月』と表示されてしまいます。 これを『2年』と表示する方法はないのでしょうか? また、関数自体 =DATEDIF(A1,TODAY()+1,"D") の方が自然なんでしょうか? ご教示ください。よろしくお願いします。

  • ■勤続年数給の計算(エクセル)について

    勤続年数給の計算(エクセル)について教えてください。 勤続年数は”DATEDIF”で求める事が出来たのですが、そこから自動計算で勤続年数給分を出したいと思っています。 6ヶ月毎に2500円UPする計算です。 基準日 2011/3/18 番号  氏名    入社日     勤続年数   勤続年数給   1   山田  2009/3/18    2年0ヶ月 こんな感じで作成しようと思っているのですが、どなたかアドバイスをお願いいたします。  

  • 勤続年数の平均を出したい

    エクセル2000で社員名簿を作っています。 平均勤続年数を出したいのですが、=AVERAGE(勤続年数の入ったセル一覧)としても答えが出ず、#DIV/0!となります。 ちなみに勤続年数は   =DATEDIF(E4,$F$2,"Y")&"年"&DATEDIF(E4,$F$2,"YM")&"ヶ月"     ※F2セルに今日の日付、E列に入社年月日が入っています という関数で出しており、セルの書式は「標準」です。 平均年齢は同じ方法で出せるので、不思議です。。。 よろしくお願いします。

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

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

  • 勤続年数の平均値の求め方

    こんにちは、エクセルについて教えてください。 ある会社での各社員の勤続年数の計算でA列に入社年月日、B列に本日の年月日があり、C列にAとBの期間(勤続年数)計算を =DATEDIF(A30,B30,"Y")&"年" & DATEDIF(A30,B30,"YM") & "月"で ●年●月で表示させています。 さて、この各社員の勤続年数の平均を出すために通常のAvarage関数を使うと「ゼロで割りました」のメッセージが出て計算してくれません。勤務年数の平均を求める方法を教えてください。

  • エスセルで勤続年数を調べていますが、=DATEDIFを使っています。

    エスセルで勤続年数を調べていますが、=DATEDIFを使っています。 例えば、2009/4/1入社で 2010/4/1現在までの入社年数を計算させると 答えが1900/1/1と表示されます。 単に、1年とか表示されないんですかね。 計算式が間違っているのでしょうか。 どなたか教えてください。

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

    いつもお世話になっております。 今回はエクセルの計算式について、ご指導の程お願い致します。 勤続年数の計算を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日」にしたいと思っています。 基本的な考え方に問題があるのでしょうか? 色々調べてみたのですが、解決に至らず困っております。 ご指導の程、宜しくお願い致します。

専門家に質問してみよう