Excelで病気休暇の付与・残高を自動計算する方法|30時間で1時間付与の計算式

「30時間勤務すると病気休暇が1時間付与される」ルールは、紙や電卓で管理すると計算ミスや入力漏れが起きやすいものです。Excelなら、勤務時間から付与(Earned)を積み上げ、使った時間(Used)を入力するだけで残高(Available)を自動更新できます。ここではExcel初心者でも迷わないように、列の作り方から式の意味、よくある落とし穴まで具体例つきで解説します。

日程Fit。無料・登録不要。「いつ空いてる?」を、ひとつのリンクで。リンクを送って、○△×でかんたん日程調整。無料で日程を作る。
目次

Excelで病気休暇(病欠時間)を管理する全体像

病気休暇の管理でやりたいことは、突き詰めると次の3つです。

  • Earned(付与):これまでに付与された病気休暇の累計時間
  • Used(使用):いつ・何時間使ったか(累計または明細)
  • Available(残高):今この時点で残っている時間

今回は、質問に沿って「G列=使用時間」「H列=残り時間」「F列=付与済み累計」という構成を前提にします。行が増えるほど真価を発揮する“積み上げ式”なので、まずはシートの形を揃えるのがコツです。

おすすめの列構成(例)

最低限、次のような列があると計算が安定します。行は日付順(古い→新しい)に並べてください。残高は「上から順に積み上がる」ため、途中で並び替えると数字がズレる原因になります。

項目内容入力/計算
A日付勤務日(または締め日)手入力
E勤務時間その行の実働時間(時間)手入力
F付与累計(Earned Sick Time)これまでの付与済み時間(累計)
G使用時間(Used)その行で使った病気休暇の時間手入力
H残り時間(Available)その時点の残高

列A〜Hすべてを同じシートに置く必要はありませんが、最初は上記の形に寄せると迷いが減ります。

結論:G列(病気休暇を使った時間)は自動計算できない

まず大事な前提として、G列(Used:使用時間)は、実際に休暇を使ったタイミングで都度入力するのが基本です。Excelは「その日に病欠だったか」「何時間分を病気休暇として扱うか」を勝手に判断できません。

たとえば、4月10日に2時間分の病気休暇を使ったなら、その行のGセルに「2」と入力します。

  • 病気休暇を使っていない行は、空欄のままでもOK(後述の式は空欄を0として扱えます)
  • 入力を統一したい場合は「0」を入れてもOK

手入力でもミスを減らすコツ

「手入力=間違える」という印象があるかもしれませんが、Excel側の設定でかなり防げます。

  • 入力規則(データの入力規則)で、G列は「0以上の数値のみ」に制限する
  • 「0.5」「1.25」など小数を使うなら、小数点以下の桁数(例:2桁)を統一する
  • 「病気休暇を使った日」を見つけやすくするために、G列に値が入ったら行を色付けする条件付き書式を設定する

こうしておくと、入力自体は手動でも、管理の“抜け”を最小化できます。

H列(残り時間)を自動計算する式:=F4-SUM(G$4:G4)

ここが本題です。前提を整理します。

  • F列:その行時点までに付与された病気休暇の累計(Earned)
  • G列:その行で使った病気休暇(Used)
  • H列:その行時点の残り(Available)

このとき、H4に次の式を入れます。

=F4-SUM(G$4:G4)

入力したら、H4セルの右下の小さな四角(フィルハンドル)を下にドラッグ、またはダブルクリックして下方向へコピー(オートフィル)します。

この式が何をしているか(初心者向けに分解)

式は大きく2つのパーツに分かれます。

パーツ意味ポイント
F4付与済みの累計「今までどれだけ貯まったか」
SUM(G$4:G4)4行目から今の行までの使用時間の合計$が付いた行番号($4)が固定され、下にコピーすると範囲が広がる

SUM(G$4:G4)は、H4では「G4だけ」、H5では「G4〜G5」、H6では「G4〜G6」というように、コピーするほど合計範囲が広がります。つまり「これまでに使った合計」を常に追いかけます。

そして、付与累計(F列)から使用累計(G列の合計)を引くので、残高(H列)が自動で更新されます。

動きがイメージできるサンプル

たとえば次のようなデータがあるとします(勤務時間や付与累計は例)。

日付E:勤務時間F:付与累計G:使用H:残高(計算)
44/180.270.27
54/280.530.53
64/380.802-1.20

この例では、4/3に2時間使ったため残高がマイナスになっています。実務上は「残高マイナス=入力ミス」ではなく「前月繰越が別にある」「制度上、付与前でも前借りできる」など状況が分かれます。Excelの式は“事実としての計算”を出すだけなので、制度に合わせてルールを追加するのが次のステップです(後述)。

勤務時間から付与累計(F列)を作る:30時間で1時間付与

質問では「G列とH列が知りたい」が中心ですが、実際にはF列(付与累計)が自動化できると管理が一気に楽になります。ここでは、E列に勤務時間が入り、F列に付与累計を出す代表パターンを紹介します。

パターンA:端数も付与(15時間なら0.5時間など)

「30時間勤務ごとに1時間」を比例計算し、端数も付与する運用(0.1時間、0.25時間など)なら、F4に次の式を入れて下へコピーします。

=SUM($E$4:E4)/30

これで、4行目からその行までの勤務時間累計を30で割り、付与累計(小数あり)を出せます。

パターンB:30時間を超えた分だけ付与(端数切り捨て)

「30時間に達したら1時間付与。端数は付けない」場合は、切り捨てのINT関数を使います。F4に次の式を入れて下へコピーします。

=INT(SUM($E$4:E4)/30)

勤務時間累計が29時間なら0、30〜59時間なら1、60〜89時間なら2…というカウントになります。制度説明と一致しやすいので、まずはこの形が分かりやすいです。

小数の丸めをきれいにしたい場合(0.01や0.25刻み)

比例計算(パターンA)では、0.266666…のような無限小数が出ることがあります。表示上は丸めても、内部でズレが溜まるのが不安なら、次のように丸めを追加します。

目的式の例(F4)意味
小数第2位までに丸める=ROUND(SUM($E$4:E4)/30,2)例:0.2666… → 0.27
0.25時間刻みに丸める(四捨五入)=MROUND(SUM($E$4:E4)/30,0.25)例:0.24→0.25、0.12→0.00
0.25時間刻みに切り捨てる=FLOOR.MATH(SUM($E$4:E4)/30,0.25)前借りにならないよう“少なめ”に付与

どの丸めが正しいかは会社のルール次第です。「表示の丸め」と「計算の丸め」を同じにすると、給与・勤怠との突合で揉めにくくなります。

残高(H列)を実務ルールに合わせて強化する

基本式の =F4-SUM(G$4:G4) だけでも残高は出ますが、実務では次のような要件がよく追加されます。ここでは、初心者でも扱いやすい“強化版”を紹介します。

残高を0未満にしたくない(マイナスを表示しない)

制度上「残高を超えて使えない」運用なら、残高がマイナスになった時点で0に止めるほうが見やすいことがあります。その場合はH4を次の式にします。

=MAX(0,F4-SUM(G$4:G4))

ただし、これだと「本当は超過している」事実が見えなくなるため、監査やチェックの観点ではマイナスも出る式のままにして、条件付き書式で赤くする運用もおすすめです。

期首に繰越残高がある(スタート残高を足す)

前年からの繰越があり、期首時点で既に残高がある場合は、どこか1セルに期首残高を置き(例:K1セルに「期首残高」)、H列の式に足します。

=$K$1+F4-SUM(G$4:G4)

こうしておけば、期首残高を変えるだけで全行の残高が一括で更新されます。複数人を管理するなら、期首残高は社員ごとに別表にしてVLOOKUP/XLOOKUPで引く方法もあります(後述)。

付与上限(キャップ)がある

例えば「付与は最大40時間まで(それ以上は貯まらない)」のような上限がある場合、F列側で上限をかけておくと計算がぶれません。端数切り捨て運用なら、F4は次のようにできます。

=MIN(40,INT(SUM($E$4:E4)/30))

端数あり運用なら、MIN(40,ROUND(...)) のように組み合わせます。

入力と表示でつまずかないための「単位」の話(時間の扱い)

病気休暇の管理で地味に多いのが「2時間」と入力したつもりが、Excel上では「2:00(時刻)」扱いになって計算が狂うケースです。Excelには大きく2つの表現があります。

表現メリット注意点
小数(時間を数値)2.5計算が単純、SUMで合計できる「2時間30分」を2.5と理解する必要
時刻(時間:分)2:30直感的(分まで入力しやすい)Excel内部では1日=1の割合なので、換算が必要

初心者におすすめなのは小数(時間を数値)です。もし「2:30」のように入力したい場合は、計算時に「×24」で時間に換算します(例:G列が時刻なら SUM(G$4:G4)*24)。どちらを採用するかを最初に決め、途中で混ぜないのが一番の近道です。

Excel初心者向け:作成手順(最短で動く形)

ここからは「何から触ればいいのか分からない」方向けに、最短で動く手順をまとめます。細かい装飾は後回しで大丈夫です。

  1. 4行目からデータを入力する前提で、3行目に見出し(例:A3=日付、E3=勤務時間、F3=付与累計、G3=使用、H3=残高)を入れる
  2. E4以降に勤務時間を入力する(例:8、7.5など)
  3. F4に付与累計の式を入れる(端数切り捨てなら =INT(SUM($E$4:E4)/30)
  4. H4に残高の式を入れる(基本形なら =F4-SUM(G$4:G4)
  5. F4とH4を下へコピーする
  6. 病気休暇を使った日にだけG列へ時間を入力する

この時点で、Eに勤務時間を追加していくほどFが増え、Gに使用を入れるほどHが減る、という基本動作が完成します。

テーブル化(Ctrl+T)で“式のコピー漏れ”をなくす

実務で一番多い事故は「途中行だけ式が入っていない」ことです。これを防ぐには、表全体を選択してCtrl+TでExcelの「テーブル」に変換するのが効果的です。

  • 新しい行を追加しても、F列・H列の式が自動で入る
  • フィルターが使いやすい(病気休暇を使った日だけ抽出など)
  • 見た目が崩れにくい

テーブル化は初心者でも恩恵が大きい設定なので、可能なら最初に取り入れてください。

複数人を1つのシートで管理したい場合(応用)

従業員が複数いる場合、「1人1シート」だと管理は簡単ですが、全体集計が面倒になります。逆に「1シートに全員分」を入れるなら、社員名(または社員ID)列を追加し、SUMIFSで“その人の累計”を計算すると破綻しにくくなります。

例:B列に社員名、E列に勤務時間、G列に使用時間が入っているとします。この場合の式例は次のとおりです(行4開始は同じ)。

勤務時間累計(その人分だけ)から付与累計を出す(F4)

=INT(SUMIFS($E$4:E4,$B$4:B4,B4)/30)

使用累計(その人分だけ)を引いて残高を出す(H4)

=F4-SUMIFS($G$4:G4,$B$4:B4,B4)

ポイントは、SUMIFSの範囲を $E$4:E4$G$4:G4 のように「上端固定+下端可変」にすることです。こうすると、社員名が同じ行だけを対象に“その時点までの累計”が取れます。日付順に並んでいれば、給与締めの集計とも相性が良いです。

よくあるエラー・ズレを防ぐチェックリスト

最後に、病気休暇のExcel管理で起きやすいミスを“事前に潰す”チェック項目をまとめます。

症状原因対策
残高が急に跳ねる/合わない行の並び替えで累計範囲が崩れた日付順を固定し、テーブル化して並び替えは「日付列のみ」で実施
#VALUE! が出るG列に文字(例:”2h”)を入力したG列は数値のみ。入力規則で制限する
端数が蓄積して最後に合わない丸め方が統一されていないROUND/MROUND/FLOOR.MATHなど、丸めルールを明文化して式に組み込む
付与が増えない勤務時間が文字扱い、または空欄が混在E列の表示形式を数値にし、入力時に全角文字を使わない

まとめ:最小の入力で「付与・使用・残高」を回す

  • G列(使用時間)は、病気休暇を使ったときに都度手入力する(Excelだけで自動判定はできない)
  • H列(残り時間)は、H4に =F4-SUM(G$4:G4) を入れて下へコピーすれば、使用累計を引いた残高が自動計算できる
  • 勤務時間から付与累計(F列)を作るなら、端数ありは =SUM($E$4:E4)/30、端数切り捨ては =INT(SUM($E$4:E4)/30)
  • 実務では「期首残高」「付与上限」「丸め」「単位」を整えると、運用が安定する

まずは基本式で“動く形”を作り、次に自社のルール(上限や繰越など)を少しずつ式に足していくのが、失敗しない進め方です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次