「30時間勤務すると病気休暇が1時間付与される」ルールは、紙や電卓で管理すると計算ミスや入力漏れが起きやすいものです。Excelなら、勤務時間から付与(Earned)を積み上げ、使った時間(Used)を入力するだけで残高(Available)を自動更新できます。ここではExcel初心者でも迷わないように、列の作り方から式の意味、よくある落とし穴まで具体例つきで解説します。
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:残高(計算) |
|---|---|---|---|---|---|
| 4 | 4/1 | 8 | 0.27 | 0.27 | |
| 5 | 4/2 | 8 | 0.53 | 0.53 | |
| 6 | 4/3 | 8 | 0.80 | 2 | -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初心者向け:作成手順(最短で動く形)
ここからは「何から触ればいいのか分からない」方向けに、最短で動く手順をまとめます。細かい装飾は後回しで大丈夫です。
- 4行目からデータを入力する前提で、3行目に見出し(例:A3=日付、E3=勤務時間、F3=付与累計、G3=使用、H3=残高)を入れる
- E4以降に勤務時間を入力する(例:8、7.5など)
- F4に付与累計の式を入れる(端数切り捨てなら
=INT(SUM($E$4:E4)/30)) - H4に残高の式を入れる(基本形なら
=F4-SUM(G$4:G4)) - F4とH4を下へコピーする
- 病気休暇を使った日にだけ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) - 実務では「期首残高」「付与上限」「丸め」「単位」を整えると、運用が安定する
まずは基本式で“動く形”を作り、次に自社のルール(上限や繰越など)を少しずつ式に足していくのが、失敗しない進め方です。

コメント