> 自動で作ると言うことは、有給日数が遡って計算されてしまい、 > 過去の有給日数も変わってします。 > →そこが難しいと思っていました。 > > 過去の分は適宜、数式の結果から、値に変換する作業が生じますけど、 > 大丈夫なんですか? > →大丈夫なんですか?の意味がつかめませんが、値に変換する方が > 履歴に正しく残りいいと思います。
大丈夫の意味は、お聞きした時点では色々な内容が含まれていましたが、
現時点では 「G5セルの種別を変更しなければならない事態が生じたら、 自分で過去の有給付与日数を"値に変換"し、数式ではないものにしてから、新しい種別に変更する」 と云う意味になります。 それで、いいですね?
※まぁ、そんな事態に遭遇する前に、過去の有給付加日数は実績なので、 何かの拍子に数式の結果として変わってしまわない様に、適時「値に変えておく」のが良策です。
1.統一早見表を下記のエリアに作る
行 ____ I ____ ___ J ___ _K_ _L_ _M_ _N_ _O_ _P_ _Q_ _R_ 1 統一早見表 2 勤続年数 0 0.5 1.5 2.5 3.5 4.5 5.5 6.5 3 週所定 労働日数 0 6 18 30 42 54 66 78 4 1日 0 0 1 2 2 2 3 3 3 5 2日 73 0 3 4 4 5 6 6 7 6 3日 121 0 5 6 6 8 9 10 11 7 4日 169 0 7 8 9 10 12 13 15 8 一般 217 0 10 11 12 14 16 18 20
2.数式を入力する (1) D3セル =DATEDIF($C$3,$B$1,"Y")&"年"&DATEDIF(C3,B1,"YM")&"カ月" (2) E3セル =LOOKUP(DATEDIF($C$3,$B$1,"M"),$K$3:INDEX($R$4:$R$8,MATCH(MIN($G$3,217),$J$4:$J$8)))
(3) A9セル =ROW(A1)*6 (4) B9セル =EDATE($C$3,$A9)+(DAY(EDATE($C$3,$A9))<>DAY($C$3)) (5) C9セル =IF(D9="","",INT(A9/12)&"年"&MOD(A9,12)&"カ月") (6) D9セル =IF($B9<=$B$1,LOOKUP($A9,$K$3:INDEX($R$4:$R$8,MATCH(MIN($G$3,217),$J$4:$J$8))),"") (7) E9セル =IF($D9="","",N(C8)) (8) F9セル =IF(D9="","",D9+E9)
(9) H9セル =IF(D9="","",MAX(0,F9-G9))
(10) B10セル =IF(D9="","",MAX(0,H9-D9)) (11) C10セル =IF(D9="","",H9-B10)
A9:F10を2行まとめて、丸ごと下にフィルコピー H9:H10を2行まとめて、丸ごと下にフィルコピー
<結果図>
行 _____A_____ _____B_____ _____C_____ _______D_______ ______E______ ___F___ ________G________ _____H_____ 1 基準年月日 2015/5/1 2 社員番号 氏名 入社年月日 勤続年数(年月) 有給付与日数 年間所定労働日数 3 999 AAAA 2011/4/1 4年1カ月 14 4 5 6 経過月数 有給付与日 経過年数 有給付与日数 繰越 保有数 消化日数 有給残(日) 7 時効数 時効後残高 8 9 6 2011/10/1 0年6カ月 10 0 10 8 2 10 0 2 11 18 2012/10/1 1年6カ月 11 2 13 4 9 12 0 9 13 30 2013/10/1 2年6カ月 12 9 21 6 15 14 3 12 15 42 2014/10/1 3年6カ月 14 12 26 6 20 16 6 14 17 54 2015/10/1 5 18 19 66 2016/10/1 20
基準年月に達していない年は、空白になるようにしてあります。 敢えて将来の状態が見たい場合は、基準年月を将来日付にしてください。
|