[[20130619171301]] 『有給休暇の計算』(こぶた) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『有給休暇の計算』(こぶた)
 過去ログを拝見致しましたが、途中で計算式がわからなくなりましたので、H列〜K列のご教示をどうぞ宜しく願い致します。
 ・有給休暇の取得と消化の計算
 ・MAX40日(40日以上は切り捨て)
 ・1日=8時間
 ・バージョン:Excel2003
 ・シート:月別
 項目
 A2:部署
 B2:氏名
 C2:前月繰越日数
 D2:前月繰越時間
 E2:当月付与日数
 F2:当月取得日数
 G2:当月取得時間
 H2:残日数
 I2:残時間
 J2:次月繰越日数
 K2:次月繰越時間

 現在の計算式
 C2:=VLOOKUP($B3,'5月'!$B$3:$K$5,9,0)
 D2:=VLOOKUP($B3,'5月'!$B$3:$K$5,10,0)
 E2:入力
 F2:入力
 G2:入力
 H2:=INT(((C3+E3-F3)*8+D3-G3)/8)
 I2:=(C3+E3-F3)*8+D3-G3-H3*8
 J2:=INT(MIN(H3*8+I3,320)/8)
 K2:=MOD(MIN(H3*8+I3,320),8)


 H2セルの式は合ってるんですよね?

 (C3+E3-F3)*8+D3-G3 部分が 総残時間 を出していますよね。
 だから INT(総残時間/8) 8で割った商=残日数 が計算出来る。
 残時間は逆に、8で割った余りなので MOD(総残時間,8) ですよね。

 次月繰越日数は、残日数と繰越MAX(40日)を比べて小さい方。
  残日数が10だったら40と比べて小さい方の 10。
  残日数が50だったら40と比べて小さい方の 40。
 次月繰越時間は、次月繰越日数が40だったら「0」。そうでなければ 残時間。
  次月繰越日数が40より小さい場合は、残時間がそのまま次月繰越時間に成るのですよね?

 と言う考えではどうでしょう?

 (HANA)

 どこも問題ないと思うのですけど、
 何かおかしいことがあるなら、
 そのデータを提示してください。

 あと、付与は「日数単位」しかないなら、
 こんなのでもいいと思います。

 J2セル =IF(H2>39,40,H2)
 K2セル =(H2<40)*I2

 (半平太) 2013/06/19(Wed) 23:06

 >どこも問題ないと思うのですけど
 本当ですね。
 てっきりどこかがおかしいのかと思ってましたが。。。

 (HANA)


 有給休暇の付与日数は法律で決められています。
 またその切り替えを実際の入社日から6ヶ月、1年ごととしているなら、月の途中で精算、繰り越しが発生します。
 これらの対処はどうしていますか。

HANA様
半平太様
 ご教示ありがとうございました。
 過去ログを拝見し、半平太様の関数を参考にさせていただき作成させていただきました。

 今回はH列以降のご教示をお願い致します。
 現在の関数では40日で丸める関数を入れていないのでH列が40日以上にならない関数を教えていただけませんか。

 ○現状
 C2:前月繰越日数→40
 D2:前月繰越時間→0
 E2:当月付与日数→2
 F2:当月取得日数→0
 G2:当月取得時間→3
 H2:残日数→41
 I2:残時間→5
 J2:次月繰越日数→40
 K2:次月繰越時間→0

 となります。

 ○希望
 C2:前月繰越日数→40
 D2:前月繰越時間→0
 E2:当月付与日数→2
 F2:当月取得日数→0
 G2:当月取得時間→3
 H2:残日数→39
 I2:残時間→5
 J2:次月繰越日数→39
 K2:次月繰越時間→5

 また、ご指摘のありました切り替えですが、
 民間企業ではないので、入社後半年で10日間付与でありません。
 入社月に2日、2か月後には3日と法律で決まった付与日数が与えられます。
 40日はMAXなのですが、出向社員は元の会社の有給を持って来て良いルールになっておりますので
 最初から40日以上になります。
 その計算式が、わからなかったので、こちらでご教示していただきたく質問させていただきました。

 (C3+E3-F3)*8+D3-G3 の部分を組み替えると
 ((C3+E3)*8+D3) - (F3*8+G3) ですよね?
 ~~(1)~~~~~~~~~   ~~(2)~~~~

 で、(1)の所が前月繰り越し+当月付与を、時間で計算したもの
   (2)の所が、当月取得を時間で計算したもの
 になってます。

 (1)の所が、380時間(40日)を超えた場合 380時間にしてから (2)を引いていけば良いなら
 ここに、MIN関数をはめ込めば良いのではないかと思いますが。

 一旦
  当月使用可日数、当月使用可時間
 なんて列を作ると、少しはすっきりするかもしれません。

 H列とJ列 や I列とK列 なんてのはいつも同じになるんですか?

 (HANA)

 > C2:前月繰越日数→40
 > D2:前月繰越時間→0
 > E2:当月付与日数→2
 > F2:当月取得日数→0
 > G2:当月取得時間→3
 > H2:残日数→39
 > I2:残時間→5
 > J2:次月繰越日数→39
 > K2:次月繰越時間→5

 1.前月繰越日数が「40」で、当月付与日数が「2」なら単純残は「42」ですよね。
   そこで、3時間取得したところで「41日と5時間」が残るハズです。
   そこにマックス40日の縛りを入れても 「40日と0時間」か「40日と5時間」になるべきではないですか?

   それが、「39日と5時間」になってしまうなら、
   「3時間休むくらいなら、その日1日休んだ方が得」となりますが、それは変じゃないですか?

 2.残日数段階でMaxの縛りを導入するなら、残と繰越はいつも同じにならないですか?
   違うケースがあるなら、どんなケースなのか教えてください。

 (半平太) 2013/06/20(Thu) 10:16

 HANA様
 半平太様

 朝から申し訳ございません。

 まず、半平太様のご質問の回答です。
 1.有給の基本が8時間=1日で1時間ずつ取得して良いルールになっております。 残日数と残時間を足すと40日にしたいです。
 2.設立したばかりの会社なので、どんな取得時間があり得るか未だ不明なのですが、現状、残日数=次月繰越日数でも良いような気がしてきましたので、J列次月繰越日数とK列次月繰越時間は削除したいと思います。

 HANA様 
 半平太様への回答と重複なりますが、H列=J列、I列=K列なので、削除させていただきます。
 MIN関数よく理解出来ていないので、少し勉強させてください。

 (こぶた)

 うーん本来、仕様は質問者さんが決めることなので、議論の対象にならないのですけど、
 余りにもおかしいので俎上に載せております。

 つまる所、何がMAX40日なのか不明瞭です。

 残なのか、繰越なのか、はたまた月中の瞬間時なのか。(また、それらは時間込みなのか)

 現時点では「残日数と残時間を足すと40日にしたい」が最終形になっていますけど、
 こんなケースを考えてみます。
  ↓
  行 ______C______ ______D______ ______E______ ______F______ ______G______ ___H___ ___I___
   1 前月繰越日数  前月繰越時間  当月付与日数  当月取得日数  当月取得時間  残日数  残時間 
   2           40             0             2             0             0      40       0 

 ある月の初日の状態です。
 前月繰越40日に2日付与されたが、MAX40の縛りがある為、残日数は40日となっている。

 その後、その月の15日に休暇を1日取得したとします。

 その月の14日まで、残は40日なので、39日になると思いきや、またまた40日のままとなります。(と思う)
 そんな計算の仕方に人間の頭がついて行けるでしょうか?

 非常に使いにくい表だと感じるのですが、本当にそんな計算方法でいいですか?
 よければ、数式を提示しますけど。

 (半平太) 2013/06/20(Thu) 13:07

 半平太様

 何度も何度も申し訳ございません。
 MAX40日は日数は全てです。

 C2:前月繰越日数
 E2:当月付与日数
 F2:当月取得日数
 H2:残日数

 上記の列がすべて40日以上にならないような関数をご教示願います。
 また、先程も申し上げた通り、時間と日数を足してMAX40日にしたいので、
 半平太様のご質問『その月の14日まで、残は40日なので、39日になると思いきや、またまた40日のままとなります。(と思う)』ではなく
 39日になる関数を教えてください。

 ややこしい事ばかりで大変申し訳ないのですが、どうぞ宜しくお願い致します。

 (こぶた)

 > MAX40日は日数は全てです。
 > C2:前月繰越日数
      ↑
   これは無理ですよね? こんなご説明がありましたから。
               ↓
 > 『出向社員は・・・最初から40日以上になります。』

 そろそろ数式を書かないと怒られそうな気がしますので、とりあえず・・・・

 (1) H2セル =INT((MIN((C2+E2)*8+D2,320)-F2*8-G2)/8)
 (2) I2セル =(MIN((C2+E2)*8+D2,320)-F2*8-G2)-H2*8

  行 ______C______ ______D______ ______E______ ______F______ ______G______ ___H___ ___I___
   1 前月繰越日数  前月繰越時間  当月付与日数  当月取得日数  当月取得時間  残日数  残時間 
   2     40             0             2             0             0        40       0 
   3     40             0             2             1             0        39       0 
   4     41             0             0             0             0        40       0 
   5     41             0             0             2             0        38       0 
   6     37             6             1             0             0        38       6 
   7     37             6             1             1             7        36       7 

 (半平太) 2013/06/20(Thu) 14:42

 半平太様

 無事に解決です!!!

 ややこしい事ばかりの質問にもかかわらず、お忙しい中、どうもありがとうございました。

 HANA様もご教示ありがとうございました。

 また、是非ご教示願います。

 ありがとうございました。

 しかし、上の処理だと、せっかく40日以上の繰越を持って来た出向社員は、
 結局、その月の初っ端で40日へカットされることになり、怒り出しませんか?

 私が首を突っ込む事でもないですけど。

 (半平太) 2013/06/20(Thu) 15:35

 半平太様

 出向社員は元々の会社に戻れば、また40日以上になるので大丈夫みたいです^^;

 色々と細部まで、ありがとうございました。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.