[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『勤続年数の計算を昇進毎に更新する方法』(こみあ)
質問させていただきます。過去ログを読んだのですが、検索語句が悪いのか、 同じような質問にめぐり合えませんでした。ご教授の程よろしくお願い致します。
社員のポイント制の表をつくっています。
社員(4) 係長(8) 課長 次長 部長 ポイント合計
Aさん 入社日 3年2ヶ月 ポイント 12 係長就任日
平社員は1年につき4ポイントもらえます。 Aさんは入社日から勤続3年で12ポイントという計算式まではつくりました。 もし、Aさんが表のように係長に就任した場合、係長就任日から、現在までの 係長就任月日を出して、ポイントをかける・・のはいけるのですが、 その場合、社員のほうも年数が進んでしまい、合計ポイントに加算されてしまうのを 防ぐ方法はないでしょうか? 係長になった日から、社員のポイントは止まるようにしたいのです。 表の構成は変えても大丈夫です。 ちなみに突然課長から就職する方もおられたりします(汗 よろしくお願い致します。
>もし、Aさんが表のように係長に就任した場合、係長就任日から、現在までの >係長就任月日を出して、ポイントをかける・・のはいけるのですが
それはどういう数式でできましたか? それができるなら同様に、入社日から係長就任までの期間が算出できるはずですよ。
>ちなみに突然課長から就職する方もおられたりします
考え方として、 課長の期間=現在-入社日-係長の期間-平社員の期間 というふうに考えればいいのではないでしょうか。 (tora)
tora様 回答ありがとうございます。
入社日から、平社員の期間を =IF(入社日="","",DATEDIF(入社日,起算日,"y")) としています。 係長のポイントは、 =IF(係長就任日="","",DATEDIF(係長就任日,起算日,"y")) としています。 1年につき、何ポイントのセルと、上のDATEDIFをかけて、ポイントを出しているのですが、 これだと、社員の年数はどんどん上がっていって、正確なポイントが出なくなると思います。 昇進するひともしない人もいるので、係長就任のセルに何か文字が入れば、 社員の年数の増加が止まる、とかはできないものでしょうか。 説明が下手ですいません。
課長の期間=現在-入社日-係長の期間-平社員の期間 ですが、平社員の年数が前述の計算式なので、上記の数式にすると、マイナスになってしまいます。 計算式云々以前の私の発想の問題かとは思いますが、何卒ご指導のほどよろしくお願い致します。
レイアウトが分からないので勝手に作ってみました。
[A] [B] [C] [D] [1] 計算基準日 2008/9/1 [2] 入社日 2000/4/1 平社員年数 4 [3] 係長昇進日 2004/6/1 係長年数 3 [4] 課長昇進日 2007/9/1 課長年数 1 [5] 部長昇進日 部長年数
D2=IF(B2="","",DATEDIF(B2,$B$1,"y")-SUM(D3:$D$5)) でD4までコピー D5=IF(B5="","",DATEDIF(B5,$B$1,"y"))
こんな感じになります。(tora)
tora様、ご回答ありがとうございます。返信遅くなり申し訳ないです。 レイアウトは横のびなのですが、tora様の書式でも作らせていただいたのですが、 D2からD4までをコピーすると、#VALUE!エラーが出てしまいます。
平社員=IF(B17="","",DATEDIF(B17,$B$16,"y")-SUM(D18:$D$20)) 係長=IF(B18="","",DATEDIF(B18,$B$16,"y")-SUM(D19:$D$20))コピーしたところ 課長=IF(B19="","",DATEDIF(B19,$B$16,"y")-SUM(D20:$D$20))コピーしたところ 部長=IF(B20="","",DATEDIF(B20,$B$16,"y") (計算基準日はB16セルです)
何度も申し訳ございません。ご指導宜しくお願い致します。
上の数式は、どのセルに入っていますか? 平社員はD2、係長はD3・・・・ですか?
B17〜B20にはどんなデータが入っていますか?
エラーになる数式(例えば係長のところ)を分割したらどうなりますか? =DATEDIF(B18,$B$16,"y") =SUM(D19:$D$20) はそれぞれエラーになりますか?
私と同じレイアウトで作ってもエラーになりますか?
質問ばかりで申し訳ありませんが、こちらでは再現できないものですから。 (tora)
>平社員は1年につき4ポイントもらえます。 係長が1年につき何ポイントもれえるのでしょうか。 課長はどうでしょうか。 そのへんが説明がないと計算できないような?(ひ)
ご回答ありがとうございます。大変申し訳ございません、 見直しましたところ、課長の昇進日が2000年でなく200年になっていました。 治しましたところ、問題なく数字が表示されました。あわてていてご迷惑をおかけして 申し訳ございませんでした。 レイアウトもtora様の書式のように直しました。本当にありがとうございました。
実は、何ヶ月、というセルも存在します。上の問題が解決しないと進めないと思っていたのですが tora様のご尽力のおかげで解決いたしましたので、どうか今一度お知恵を拝借したく、 宜しくお願い申し上げます。 何ヶ月のセルは年数の横のセルなので、
入社日 =IF(C5="","",DATEDIF(C5,$A$1,"y")-SUM(D$6:$D8))(平社員年数の計算式) の横に =IF(C5="","",DATEDIF(C5,$A$1,"yM")-SUM(D$6:$D8))(平社員月数の計算式)
を入れたら済むだろうと思っていたのですが・・ -2ヶ月と表示されてしまいます。 書式設定が悪いのかもしれません。ユーザー設定で 0"ヶ月"を設定しています。 勤続年数、マイナス で検索したのですが、思うように答えが出てこなかったので どうかご指導の程宜しくお願い致します。
係長は6ポイントで、課長は15ポイント、部長は20ポイントです。 宜しくお願い致します。
(平社員月数の計算式)がE列にあるなら、 =IF(C5="","",DATEDIF(C5,$A$1,"yM")-SUM(E$6:$E8)) ~~~~~~~~ としたらどうなりますか。 (sato)
sato様、 ご指摘ありがとうございます。 最後の計算をE列に変えてみたのですが、やっぱりマイナスが出てしまいます。
入社日 1980年3月1日 係長昇進 1995年5月1日に設定しているのですが、 16年-10ヶ月と表示されます。
平社員年数式 =IF(C4="","",DATEDIF(C4,$A$1,"y")-SUM(D$5:$D7)) 答え 16年 月数式 =IF(C4="","",DATEDIF(C4,$A$1,"yM")-SUM(E$5:$E7)) 答え-10ヶ月
少し行をいじったので、上の計算式とは異なりますが・・ 15年2ヶ月に表示したいのです。
そのほか 係長昇進 1995年5月1日 4年10ヶ月 課長昇進 2000年3月1日 6年-7ヶ月 部長昇進 2005年8月1日 2年8ヶ月 起算日 2008年4月1日なので、部長はあっているようです。
どうかよろしくお願い致します。
おっしゃるとおり、私の勘違いでした。 toraさんの表をちょっと修正して
[A] [B] [C] [D] [E] [F] [1] 計算基準日 2008/4/1 年 月 (作業列) [2] 入社日 1980/3/1 平社員 16 2 182 [3] 係長昇進日 1995/5/1 係長 4 10 58 [4] 課長昇進日 2000/3/1 課長 6 5 89 [5] 部長昇進日 2005/8/1 部長 2 8 8
F2=IF(B2="","",DATEDIF(B2,$B$1,"m")-SUM(F3:$F$5)) として、F4までコピー F5=IF(B5="","",DATEDIF(B5,$B$1,"ym")) E2=IF(F2="","",MOD(F2,12))) としてE5までコピー
これであってますかね? ちょっと不安ですが・・・ (sato)
計算基準日 2008/4/1 月 入社日 1980/3/1 平社員 337 *4/12 係長昇進日 1995/5/1 係長 155 *2/12 課長昇進日 2000/3/1 課長 97 *9/12 部長昇進日 2005/8/1 部長 32 *5/12 E2=IF(B2="","",DATEDIF(B2,$B$1,"m"))
でどうなんでしょう・ (SSS)
おはようございます。ご回答ありがとうございます。 返信が遅くなり申し訳ないです。
sato様 ご指示通りに計算式をおいてみると、sato様の通りの答えが作業列に表示されました。 マイナスではなくなりました。ただ、勤続年数の方が、入社日より課長昇進までの期間が 15年と2ヶ月ではなくてはならないような気がします。 ポイント換算に勤続月数は関係なく、年数のみで計算するので、セルを分けたのですが、 年数が繰り上がらないようにすることはできるのでしょうか。 重ね重ね、申し訳ないです。
SSS様 ご回答ありがとうございます。 月数の式 =IF(C4="","",DATEDIF(C4,$A$1,"m")*4/12) という意味ではないんですよね・・すいません、エクセルはずっと簡単なSUM式くらいしか 使っていなかったので、理解に乏しく申し訳ないです。 今一度、ご教授の程宜しくお願い致します。
=IF(C4="","",DATEDIF(C4,$A$1,"m")*4/12) ポイントを数える数式になります
*4/12 *2/12 *9/12 *5/12 はポイントを数える為の月数に乗じる付加数式です。
平4 →係長上乗せ2→課長上乗せ9→部長上乗せ5 4ポイント 結果6 結果15 結果20
考え直しました。
D2=IF(B2="","",DATEDIF(B2,MIN($B$1,B3:$B$5),"y")) でD4までコピー。 E2=IF(B2="","",MOD(DATEDIF(B2,MIN($B$1,B3:$B$5),"m"),12)) でE4までコピー。(F列は不要)
D6とE6は前のとおり。 またまた不安ですが。(sato)
追記 前回、平社員の年数が1年多かったのは、係長、課長、部長の1年未満の端数の合計が 1年以上になる場合を考慮しなかったため。 同様に、月数の計算式も前回のは、1月未満の日数の合計が30日を越えると誤差が出ると思います。
sato様 ご回答ありがとうございます。返信が遅れて申し訳ないです。 おかげで完璧な表ができました。ご尽力頂きましたこと、感謝致します。 これから会社でデータベースを作っていくことになりますので、 これを励みに勉強させて頂きたいと思っております。 また行き詰まった時にこちらに質問させて頂く事があるかもしれませんが、 その時はまたご教授頂けましたら幸いです。 本当にありがとうございました!上司も今まで手計算だったので、楽になると喜んでいました!
tora様も、前半お世話になり、ありがとうございました。 自分のミスでご迷惑をおかけして申し訳ないです。 いままで使う側の事務員でしたが、これからは作る側にまわらなければならないので、 気持ちを切り替えて若輩ながらも勉強させて頂きます。
SSS様 =IF(C4="","",DATEDIF(C4,$A$1,"m")*4/12) =IF(C5="","",DATEDIF(C5,$A$1,"m")*2/12) =IF(C6="","",DATEDIF(C6,$A$1,"m")*9/12) =IF(C7="","",DATEDIF(C7,$A$1,"m")*5/12) をポイント欄にいれると、小数点以下の数字が出てきて、合計も出来上がった表とは 違うみたいです。私の方で再現できなくてすいません・・意味を取り違えているのかも しれないです。一緒に考えてくださりありがとうございます。 また機会がありましたら、ご教授の程宜しくお願い致します。
ROUND ROUNDUP ROUNDDOWN 等組み合わせれば 小数も調整できますよ。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.