- ベストアンサー
エクセルで日付を判定
勤続年数をカウントしたいのですが、エクセルで毎年1月1日になったら、数字の入ったセルに値をたすような事ってできますでしょうか? 1年目、2年目・・・・みたいにしたいのですがどうでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
補足見ました!これでははどうでしょうか? ----A------B------C------D------E--- 1------入社年月日---勤続年数---有給休暇日数-消化日数 2佐藤----2001/4/4----●●●----■■■■ 3鈴木 ●●●のところに、以下のような式を入れてみてください。 =DATEDIF(B2,TODAY(),"y")+1 -解説- DATEDIF関数は、2つの日付から期間をあらわす関数です。すなわち 2001/4/4から今日まで(TODAY()の部分です)何年("y"の部分)経過しているのか?と言うのがわかる関数です。しかし、満年で表示されるため、今回は入社した時点で1年目(有給11日)を得たいので、最後に+1を言うのを追加しています。 (もしかしたら、この式を入れて勤続年数だすと、表示が1900/1/3とかになってしまうかもしれません。その場合は、「書式」→「セル」→「表示形式タブ」の中で、「標準」と言うのを選択してください。すると、「3」と言う感じで、勤続年数になると思います。 ここでは、終了日をtoday()を使うことによって、その日現在の勤務年数がわかりますので、 >実際は社員一人一人違うのです。ですから、有給を加算する日も社員の入社日別で変わってきてしまいます。 ということでしたので、7/1に入社した人は、来年の7/1になった時点で、有給休暇が23日になり、10/1に入社した人は、来年の10/1になった時点で、有給休暇が23日になると言うことだと思ったのですが、どうでしょうか? 一度、式を入れて確認してみてください。 -まとめ- 勤続年数を出したいところには =DATEDIF(B2,TODAY(),"y")+1 有給休暇の日数を出したいところは =IF(C2=1,11,IF(C2=2,23,IF(C2=3,36,IF(C2=4,50,IF(C2=5,65,(C2-5)*15+65)))))-E2 実際にやってみて、不都合があったり、「●年●月●日に入社した人が有給休暇は、●日にならなければならないのに、●日になってしまう・・・」 などありましたら、補足してくださいね。
その他の回答 (4)
- omusupa
- ベストアンサー率61% (115/186)
補足見ました。それでは。 ----A------B------C------D------E--- 1------入社年月日---勤続年数---有給休暇日数-消化日数 2佐藤----2001/4/4----1------■■■■ 3鈴木 ■の部分に =IF(C2=1,11,IF(C2=2,23,IF(C2=3,36,IF(C2=4,50,IF(C2=5,65,(C2-5)*15+65)))))-E2 と入力してください。そうすると、各社員の勤続年数分のトータル日数がでます。 そして、消化日数に今までの消化した有給休暇を手動で入れていくと、残の有給休暇がD2に表示されます。 で、問題は、勤続年数のことなのですが、 2002/7/1の時点で2002/4/2に入社した人は有給休暇11日ですか?(勤続年数は1年ですか?) それとも0日ですか? 補足お願いします。(だいぶ分ってきましたよ(たぶん)もう少しだと思います)
補足
遅くなってすいません・・・ 入社日は人それぞれ違うので、入社した時点から、一年目となりまして有給は11日です。 7月1日は基本的な入社日(新入社員等)で、実際は社員一人一人違うのです。 ですから、有給を加算する日も社員の入社日別で変わってきてしまいます。 色々な事まで考えてくださって、本当にありがとうございます。
- omusupa
- ベストアンサー率61% (115/186)
はいわかりました。 でも、もう少し具体例がほしいのですが・・・ 質問1 氏名----勤続年数---有給休暇 佐藤和也----7------? 斉藤栄子----1------? 加藤洋介---10------? ?のところに、何と言う数字が入ればいいですか? 単純に勤続年数が1年だと有給休暇が11日、2年だと22日ではないですよね。 何か規則があると思うのですが・・・ 質問2 >有給休暇に11を自動的に加算できるようにしたいのです これは、毎年7月になると 加藤洋介---10------22(この数字は仮に…ってことで) が 加藤洋介---10------33 と言う風にしたいということでしょうか? もしかしたら、今日はもうPC見ないかもしれません。もしほかの方 わかる方いらっしゃいましたら、答えてあげてください。
補足
補足遅れて申し訳ありません。 ?のところは、単純に有給休暇の残日数の数字が入ります。 有給を使用した場合は?部分を手動で使用した分だけ、減らしています。 その数字に、毎年7月になった場合11を追加しています。 規則的な事は、入社1年目は11日、2年目は12日と最大15日(勤続5年目)まで増えますので勤続5年目までは7月になるとそれぞれ、違う値が加算されます。また、5年以上の人はすべて15日の加算となっています。
- omusupa
- ベストアンサー率61% (115/186)
まず、 2002.12.5に入社した人は2003.1.1の時点で 0年目になりますか?それとも1年目? 0年目と表示させたいのであれば、(満で考えるのであれば) =datedif(入社日の入っているセル,today(),"y") でいいと思います。 1年目と表示させたいのであれば、 =year(today())-year(入社日の入っているセル) でどうでしょうか? それとも・・・ 2000.2.2に入社をして、2003.1.1の時点で 2年目と考えて2003.2.3になると3年目になるのを、2003年度中は いつファイルを開いても2年目となるようにしたいのでしょうか? それであれば、 =datedif(入社日の入っているセル,date(year(today()),1,1),"y") どうでしょうか?もう少し具体例などがあれば、答えらられるのですが・・
補足
実は有給休暇のカウントに使いたかったのです。すいません。 社員名簿があり、入社日のセル、勤続年数のセル、有給休暇のセルがあり、 毎年7月に有給休暇に11を自動的に加算できるようにしたいのです。 できれば、勤続年数により加算する数値を変動させたいのですが・・・ 甘えすぎですいません。
- imogasi
- ベストアンサー率27% (4737/17069)
(1)D1に2003/1/1と入れる。 (2)A列に入社日があるとして A1に=DATEDIF(A1-365,$D$1,"y")と式を入れる。 (3)B2以下を複写する。 (4)B列のセル書式を標準にする。 (5)未入力セルでは#NUMが出ますが、この例では 不要かと思います。消し方はご存知と言うことで略。 (6)毎年新年にはD1の日付けを今年の正月日に書きかえる必要あり。 (7)閏年のとき2月末入社の人用に355-->366 としないといけないかも。
お礼
ありがとうございます!! 私の要求通りの答えでした!! しかも、詳しく回答まで頂いて本当にありがとうございます。私もこれから少しでもできるようなる為にがんばってみようと思います。 すごく助かりました。ありがとうございます。