Excelで有休取得率を自動集計する方法

Excelで有休取得率を自動集計する方法 IT
  1. 第1章:有休取得率の基本(定義・計算式・集計ルール)
    1. 有休取得率の代表的な定義
    2. 基本の計算式(Excelに落とし込む前提)
    3. 集計ルールで揉めやすいポイント(先に決める)
    4. Excel集計に向く「必要最低限のデータ粒度」
  2. 第2章:まずは下準備:集計しやすい有休データの作り方(入力フォーマット)
    1. 結論:おすすめは「取得実績」と「付与(残)情報」を分ける
    2. ① 有休取得ログ(明細)は「1行=1件」で作る
    3. ② 付与台帳(マスタ)は「1人×1年度=1行」
    4. 入力ミスを減らす小ワザ(20代会社員でも回せる運用)
  3. 第3章:関数で自動集計する(SUMIFS/COUNTIFSで取得日数・付与日数を出す)
    1. まず作るのは「集計シート」:1人×1年度の一覧
    2. SUMIFSで「取得日数」を出す(区分=有休で絞る)
    3. COUNTIFSは「回数」を見たいときに使う(おまけ)
    4. 付与台帳から「付与日数」を引っ張る(SUMIFSが安定)
    5. 取得率(%)をエラーなく計算する(IFERROR/0除算対策)
    6. 関数集計を“崩さない”ための最低限のチェック
  4. 第4章:ピボットテーブルで一発集計(部署別・月別・個人別に切り替える)
    1. ピボットの元データは「取得ログ」がおすすめ
    2. ピボットテーブルの作り方(最短手順)
    3. 部署別・個人別の「取得日数」を一瞬で出す
    4. 「取得率」までピボットで出す:計算フィールドを使う
    5. 切り替えをラクにする:スライサー(実務で一番便利)
  5. 第5章:運用で崩さないコツ(入力ミス防止、更新手順、ダッシュボード化)
    1. 入力ミス防止:ミスは「気合」ではなく「仕組み」で潰す
    2. 更新手順:やることを「3分で終わる儀式」にする
    3. ダッシュボード化:上司に刺さるのは“率”より“見える化”

第1章:有休取得率の基本(定義・計算式・集計ルール)

「有休取得率を出して」と言われても、会社や資料によって“取得率”の意味が微妙に違うことがあります。Excelで自動集計する前に、まずは定義とルールを揃えておかないと、計算は合っているのに数字だけズレる…という事故が起きがちです。ここでは、集計をブレさせないための基本を押さえます。

有休取得率の代表的な定義

実務でよく使われるのは次の2つです。

  • 取得率(付与基準)= 取得日数 ÷ 付与日数
  • 取得率(保有基準)= 取得日数 ÷(繰越+付与)

「付与日数」はその年度に新しく付いた日数。「繰越」は前年から残った日数です。社内報告が付与基準なのか保有基準なのかを最初に確認しましょう。おすすめは、年度のKPIとしては付与基準消化状況の実態把握には保有基準の両方を出せる形にしておくことです。

基本の計算式(Excelに落とし込む前提)

もっともシンプルな形はこれです。

有休取得率(%)=(取得日数 ÷ 付与日数)×100

Excelではパーセント表示にするので、実際には「取得日数 ÷ 付与日数」まで作って、セルの表示形式を「パーセンテージ」にするのがラクです。なお、付与日数が0の場合にエラーにならないよう、後の章でIFERRORなどで対策します。

集計ルールで揉めやすいポイント(先に決める)

自動化の前に、次のルールを明文化しておくと後工程がスムーズです。

  • 集計期間:年度(例:4/1〜3/31)なのか暦年(1/1〜12/31)なのか
  • 半休の扱い:0.5日でカウントするか、回数管理にするか
  • 時間単位有休:1時間=0.125日(8時間換算)など日数換算ルール
  • 欠勤・特休との区別:入力上の種別(有休/代休/振休/特休)を必ず分ける
  • 入退社者:年度途中の付与(按分)をどう扱うか

Excel集計に向く「必要最低限のデータ粒度」

有休取得率を安定して自動集計するなら、最低でも次の3点が揃っている必要があります。

  • 誰が(社員IDまたは氏名)
  • いつ(取得日、付与日、対象年度)
  • どれだけ(取得日数、付与日数)

このうち「どれだけ」が曖昧だと、半休や時間休の換算で集計が破綻します。第2章では、ここを崩さず運用できる入力フォーマットを作ります。まずはこの章で決めた定義(付与基準 or 保有基準)とルールを、シートの上部に注記として固定しておくのがコツです。

第2章:まずは下準備:集計しやすい有休データの作り方(入力フォーマット)

自動集計がうまくいかない原因の8割は「関数」ではなく「入力の形」です。第1章で決めた集計ルール(半休=0.5、時間休の換算、集計期間など)を、ブレないデータ構造に落とし込めば、SUMIFS/COUNTIFSでもピボットでも安定して回ります。

結論:おすすめは「取得実績」と「付与(残)情報」を分ける

1つの表に全部詰め込むと、入力が重くなりミスも増えます。シート(またはテーブル)は次の2枚構成が扱いやすいです。

  • 有休取得ログ:いつ・誰が・何日使ったか(明細)
  • 付与台帳:年度ごとの付与日数・繰越日数(マスタ)

① 有休取得ログ(明細)は「1行=1件」で作る

複数日連続の休みを「4/10〜4/12」みたいに1セルで持つと、集計が途端に面倒になります。おすすめは1日(または1申請)=1行の明細です。

列名(例) 内容 入力のコツ
社員ID 社員を一意に識別 氏名揺れ防止。氏名は別列でOK
氏名 表示用 集計キーは社員ID推奨
部署 当時の所属 部署異動があるなら「取得時点」で持つ
取得日 有休を使った日 日付型で入力(文字列にしない)
区分 有休/代休/特休… 有休だけを集計できるよう必須
取得日数 1, 0.5, 0.125… 半休・時間休は日数換算で統一
対象年度 2026など 年度集計をラクにする補助列

ポイントは「取得日数」を最初から数値で確定させることです。半休を「午前」「午後」、時間休を「2時間」などのまま残すと、後で換算式が増えて壊れやすくなります。第1章で決めたルールどおり、8時間=1日なら1時間=0.125日のように、入力時点で日数に寄せましょう。

② 付与台帳(マスタ)は「1人×1年度=1行」

取得率(付与基準)を出すなら、年度ごとの付与日数が必須です。ここを明細と混ぜず、マスタとして持つと整います。

列名(例) 内容 入力のコツ
社員ID キー 取得ログと同じID体系に統一
対象年度 2026など 年度単位の集計でJOINしやすい
付与日数 その年度に付与された日数 途中入社・按分もここで確定
繰越日数 前年からの繰越 保有基準も出すなら保持

入力ミスを減らす小ワザ(20代会社員でも回せる運用)

  • テーブル化(Ctrl+T):行追加しても集計範囲が自動で伸びます
  • 入力規則:区分はプルダウン(「有休/代休/特休」など固定)にする
  • 日付は必ず日付型:貼り付けで文字列化しがち。表示がおかしければ修正
  • 対象年度の補助列:年度(4月始まり等)がある会社ほど効果大

ここまでの形にしておけば、第3章でSUMIFS/COUNTIFSを使って「社員ID×対象年度」で取得日数・付与日数を引っ張るだけになります。つまり、下準備=自動化の9割。まずはこのフォーマットを作って、1ヶ月分だけ入力してみるのが最短ルートです。

第3章:関数で自動集計する(SUMIFS/COUNTIFSで取得日数・付与日数を出す)

第2章の「取得ログ(明細)」と「付与台帳(マスタ)」ができたら、あとは社員ID×対象年度で数字を引っ張って、有休取得率を自動計算するだけです。ここではピボットを使わず、まずは関数で“確実に回る集計”を作ります(後の章のピボットにも流用できます)。

まず作るのは「集計シート」:1人×1年度の一覧

新しいシートに、次の列を用意します。

  • 社員ID
  • 氏名(表示用)
  • 対象年度
  • 取得日数(関数)
  • 付与日数(関数)
  • 有休取得率(関数)

社員IDと対象年度は、付与台帳に合わせて並べるのがラクです(付与台帳が「1人×1年度=1行」なので、そのまま集計の土台にできます)。

SUMIFSで「取得日数」を出す(区分=有休で絞る)

取得ログがテーブル化されている前提で、テーブル名を tblLog(列:社員ID/対象年度/区分/取得日数)とします。集計シートで、社員IDがA2、対象年度がC2のとき、取得日数(D2)は次でOKです。

=SUMIFS(tblLog[取得日数], tblLog[社員ID], $A2, tblLog[対象年度], $C2, tblLog[区分], "有休")

これで「その社員の、その年度の、有休の取得日数」だけが合計されます。半休=0.5、時間休=0.125…のように入力時点で日数換算できていれば、SUMIFSは合計するだけなので壊れません。

COUNTIFSは「回数」を見たいときに使う(おまけ)

取得率そのものは日数で算出しますが、「何回休んだか」を見たい場面もあります。たとえば有休の取得件数(E2など)は次のように出せます。

=COUNTIFS(tblLog[社員ID], $A2, tblLog[対象年度], $C2, tblLog[区分], "有休")

半休を2回取っても「回数は2、日数は1.0」のように分けて把握できます。上司への説明や、取得促進の施策検討で地味に便利です。

付与台帳から「付与日数」を引っ張る(SUMIFSが安定)

付与台帳テーブルを tblGrant(列:社員ID/対象年度/付与日数/繰越日数)とします。集計シートで付与日数(E2)は次の式にします。

=SUMIFS(tblGrant[付与日数], tblGrant[社員ID], $A2, tblGrant[対象年度], $C2)

付与台帳は本来「1人×1年度=1行」なので、XLOOKUPでも取れます。ただ、データが重複してしまったときにXLOOKUPは先頭を拾って気づきにくい一方、SUMIFSなら“重複した分だけ合計されて異常値になりやすい”ので、ミス検知の意味でSUMIFS推しです。

取得率(%)をエラーなく計算する(IFERROR/0除算対策)

最後に、有休取得率(F2)を作ります。付与日数が0(未付与・入社直後など)だと #DIV/0! になるので、次のようにエラー回避します。

=IFERROR(D2/E2, 0)

表示形式を「パーセンテージ」にすれば完成です(例:0.55 → 55%)。社内の運用によっては、0ではなく空欄のほうが見やすいこともあるので、その場合は次にします。

=IFERROR(D2/E2, "")

関数集計を“崩さない”ための最低限のチェック

  • 区分の表記ゆれ:「有給」「有休 」などが混ざるとSUMIFSで漏れます(第2章の入力規則が効く)
  • 社員IDの揺れ:集計キーは氏名ではなくID(これが一番事故が少ない)
  • 対象年度の一致:取得ログ側の対象年度が空欄だと集計に乗りません

ここまでできれば、集計シートはログに行を追加するだけで自動更新されます。次の第4章では、この集計の考え方をそのまま使って、ピボットテーブルで「部署別・月別・個人別」をワンクリックで切り替える形にしていきます。

第4章:ピボットテーブルで一発集計(部署別・月別・個人別に切り替える)

第3章までで関数集計は完成ですが、上司や人事からよく来る依頼はだいたいこうです。

  • 「部署別に、今月の取得率だけ出して」
  • 「個人別に並べ替えて、低い人を見つけたい」
  • 「月別推移(4月〜)でグラフ作れる?」

これを関数で全部作ると列が増えて管理が大変。そこで使うのがピボットテーブルです。データさえ整っていれば、切り替えはほぼワンクリックになります。

ピボットの元データは「取得ログ」がおすすめ

基本は第2章の有休取得ログ(明細)をテーブル化(Ctrl+T)したものを使います。ピボットは「明細→集計」に強いので、まずはログから取得日数の合計を自由に切り替えられる状態を作りましょう。

ただし「取得率(取得日数÷付与日数)」は分母が必要です。ピボットをスムーズにするために、取得ログに次の補助列を足すのが実務向きです。

  • :=DATE(YEAR([@取得日]),MONTH([@取得日]),1)(月初日で揃える)
  • 付与日数(参照):社員ID×対象年度で付与台帳から引っ張る(XLOOKUP等)

付与日数は「本来ログに無い情報」ですが、ピボットで率まで一発表示したいなら、ログ側に持たせるのが近道です(更新されても参照で追従します)。

ピボットテーブルの作り方(最短手順)

  1. 取得ログ(tblLog)のどこかのセルを選択
  2. [挿入]→[ピボットテーブル]
  3. 「新しいワークシート」を選んでOK

部署別・個人別の「取得日数」を一瞬で出す

まずは分かりやすい指標から作ります。

  • :部署(or 社員ID/氏名)
  • :月(補助列の「月」)
  • :取得日数(合計)
  • フィルター:対象年度、区分(有休)

ここで重要なのは、値に入れるのは必ず「合計」になっていること。変な平均になっていたら、値フィールドの設定から「合計」に直します。

「取得率」までピボットで出す:計算フィールドを使う

ログに「付与日数(参照)」列を用意できた前提で、ピボット内で取得率を作ります。

  1. ピボットをクリック
  2. [ピボットテーブル分析]→[フィールド、アイテム、セット]→[計算フィールド]
  3. 名前:有休取得率
  4. 数式:=取得日数/付与日数

作成した「有休取得率」を値に追加し、表示形式をパーセンテージにすれば完成です。部署別でも個人別でも、月別推移でも、同じピボットで切り替えできます。

注意:ピボットの計算フィールドは「合計同士で割る」挙動になります。部署の取得率を「部署内の取得日数合計 ÷ 部署内の付与日数合計」で定義しているならOKですが、「個人の取得率を平均したい」など別定義の場合は、関数集計(第3章の集計シート)を元にピボット化するほうが安全です。

切り替えをラクにする:スライサー(実務で一番便利)

「対象年度」「部署」「区分(有休)」を毎回フィルターで開くのは地味に面倒です。そこでピボットを選択して、[ピボットテーブル分析]→[スライサーの挿入]を使いましょう。

  • 対象年度:年度切り替えが一発
  • 部署:部署別レポートを使い回せる
  • 区分:原則「有休」固定(混入チェックにもなる)

スライサーは「クリック=条件変更」なので、報告資料づくりが一気に速くなります。

次の第5章では、この仕組みを運用で崩さないために、入力ミス防止・更新手順・ダッシュボード化のコツをまとめます。

第5章:運用で崩さないコツ(入力ミス防止、更新手順、ダッシュボード化)

ここまで作っても、現場でよく起きるのが「最初は回ってたのに、数ヶ月後に数字が合わない問題」です。原因はだいたい入力ミス更新手順の属人化。この章では、仕組みを“壊れない運用”に寄せるための実務ワザをまとめます。

入力ミス防止:ミスは「気合」ではなく「仕組み」で潰す

  • 入力するのは取得ログだけ:付与台帳は年1回の更新に固定。日々の運用対象を絞るほど事故が減ります。
  • 区分は必ずプルダウン:第2章の入力規則を徹底。「有給」「有休 」の表記ゆれはSUMIFS/ピボット両方の敵です。
  • 数値列は数値しか入れない:取得日数列に「半休」など文字が混ざると集計が破綻します。入力規則で「0〜1の小数のみ」など制限すると強いです。
  • 対象年度は自動算出に寄せる:手入力だと空欄が出ます。たとえば4月始まりなら、取得ログに補助列を作り、取得日から年度を計算して固定化(値貼り)する運用が安全です。

更新手順:やることを「3分で終わる儀式」にする

おすすめの手順はこれだけです(担当が変わっても回ります)。

  1. 取得ログに追記(テーブル最終行の次に入力するだけ)
  2. ピボット更新:ピボット上で右クリック→[更新](または[データ]→[すべて更新])
  3. 異常チェック:次の2つだけ確認
    • 取得率が100%超の人・部署がないか(付与日数参照ミス、年度ズレの典型)
    • 当月の取得日数が0ばかりになっていないか(区分表記ゆれ、対象年度空欄の典型)

コツは「チェック項目を増やしすぎない」こと。最低限でも、異常値はかなり早く見つかります。

ダッシュボード化:上司に刺さるのは“率”より“見える化”

最後に、報告資料を毎回作らないための形にします。新規シートに次を置くだけでOKです。

  • KPIカード:全社取得率(今年度)/平均取得日数/未取得者数(0日)
  • 部署別ランキング:取得率の高い順・低い順(ピボット+並べ替え)
  • 月別推移グラフ:取得日数(または取得率)の折れ線(ピボットグラフが早い)
  • スライサー:対象年度・部署(第4章の設定を流用)

20代会社員の現場だと、求められるのは“細かい計算の正しさ”と同じくらい“すぐ出ること”。入力→更新→見るがワンセットで回る状態まで作れば、Excelの集計はほぼ勝ちです。

コメント

NewsTowerをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む