とりあえず、エクセルで作ってみました。
色々やり方はありますが、
こんな感じでどうでしょう。
有給申請日,休暇開始日,休暇終了日,日数,処理済み?
手入力,手入力,手入力,=DATEDIF(開始日セル,終了日セル,"D")+1,自動入力
申請に応じて入れる部分を作ります。
現保有日数,入社日,本日,経過月数
=SUMIF(有効かどうかの判定範囲,"",付与日数範囲),手入力,=today(),=DATEDIF(入社日セル,本日,"m")
付与表(入社してからの経過した月数で付与日数を管理する表)
付与理由,月数,日数,有効期限,付与・抹消
半年,6,10,24,=IF(月数セル>経過月数セル,"未付与",IF(月数セル+有効期限セル>=経過月数セル,"","抹消"))
付与理由とかは、オートフィルとかを使って入力すると楽です。
半年毎に有給の付与があるとしても退職までに付与される回数(レコード)はたかだかしれていますから、こういう表を作って管理するというアイデアです。
申請によって消化した日数というのは、エクセルの数式では処理できないので、マクロでやります。
計算ボタンを作ってマクロを登録します。
Public Sub calc()
有給残 = "I3" '列の先頭
申請日数 = "D2" '列の先頭
保有日数 = "F2"
i = 0
'Set 処理セル = Range(申請日数).Offset(x, 0)
Do Until Range(申請日数).Offset(i, 0).Value = "" 'データがなくなるまで
If Range(申請日数).Offset(i, 1).Value <> "済" Then
If Range(保有日数).Value >= Range(申請日数).Offset(i, 0).Value Then
j = 0
日数 = Range(申請日数).Offset(i, 0).Value
Do Until Range(有給残).Offset(j, 0).Value = "" 'データがなくなるまで
If Range(有給残).Offset(j, 2).Value = "" Then '有効な期間である
If Range(有給残).Offset(j, 0).Value >= 日数 Then 'とりたい日数より多い
Range(有給残).Offset(j, 0).Value = Range(有給残).Offset(j, 0).Value - 日数
Exit Do '日数 = 0
Else
日数 = 日数 - Range(有給残).Offset(j, 0).Value
Range(有給残).Offset(j, 0).Value = 0
End If
End If
j = j + 1
Loop
Else
MsgBox "取得できる日数が残っていません", vbOKOnly, "日数エラー"
Exit Do
End If
End If
Range(申請日数).Offset(i, 1).Value = "済"
i = i + 1
Loop
End Sub
シートができたら、テンプレートとして残しておいて、
コピーをしてシート名を個人の名前に変えます。
ファイル自体は、有給管理簿とでもして、課とかの単位でやればいいと思います。
みたいな感じでやればいいと思います。
細部は、会社の規約により変更すればいいと思います。
わかりにくいかもしれませんが
メールかなんかで、サンプルを渡せたらいいのですが、このサイトの規約によりできません。
削除覚悟で…自主規制
お礼
例えば Aさんの場合10年9月1日入社 6ケ月後 10日 1年後 11日・・・ となります 勿論有給を使えば減っていきます 毎年その様に増減を繰り返して 16年9月現在 有給残日数 12日とか ってすぐに計算出来るようにしたいのですが エクセルで出来ますか? 単純な増減の他に過去2年以降に取得した有給は抹 消とかありますが どの様な計算方法があるのでしょうか