Python 業務自動化 | Excel業務自動化:Excel基本操作 - Excel勤怠集計

Python Python
スポンサーリンク
  1. Excel勤怠集計は「出勤・退勤・休憩・残業などの勤怠データを自動で計算し、給与計算に使える形へ整形する」ための最強スキル
  2. 勤怠集計の基本構造(最重要ポイント)
    1. 出勤・退勤の時間計算
    2. 休憩時間の計算
    3. 残業時間の計算
    4. 日次 → 月次 → 社員別の集計
  3. 勤怠データの例(よくあるExcel構造)
  4. 勤怠集計の基本テンプレート(まずはこれを押さえる)
    1. 出勤・退勤から勤務時間を計算する例
    2. 深掘りポイント
  5. 残業時間を自動計算する(実務で必須)
    1. 所定労働時間(例:8時間)を超えた分を計算
    2. 深掘りポイント
  6. 社員別に月次勤怠を集計する(給与計算に必須)
    1. 氏名ごとに実働時間・残業時間を集計
    2. 深掘りポイント
  7. 月別勤怠集計(複数月の勤怠を扱う場合)
    1. 日付から月を抽出して集計
    2. 深掘りポイント
  8. 勤怠エラーを自動検出する(品質向上に必須)
    1. 出勤・退勤の未入力を検出する例
    2. 深掘りポイント
  9. 勤怠集計を「見やすいExcel」に整形する
    1. 集計結果を複数シートにまとめる例
    2. 深掘りポイント
  10. 勤怠集計+グラフ自動生成(レポートとして完成)
    1. 月別実働時間の折れ線グラフを作成する例
    2. 深掘りポイント
  11. 勤怠集計を業務で設計するときの視点
    1. 日付・時刻を必ず datetime に変換する
    2. 実働時間 → 残業時間の順で計算する
    3. 社員別・月別の集計を作る
    4. エラー検出を必ず入れる

Excel勤怠集計は「出勤・退勤・休憩・残業などの勤怠データを自動で計算し、給与計算に使える形へ整形する」ための最強スキル

あなたのように業務効率化を本気で考える人にとって、 勤怠集計の自動化は“ミス防止 × 時間削減 × 正確性向上”を同時に達成できる最重要領域 です。

勤怠は人が入力するため、 出勤漏れ、退勤漏れ、休憩未入力、日付ミス、フォーマット崩れなど エラーが非常に多い領域です。

Pythonを使えば、 勤怠データ読み込み → 時間計算 → 集計 → レポート化 まで完全自動化できます。

初心者でも理解できるように、例題を交えて丁寧に解説します。

勤怠集計の基本構造(最重要ポイント)

勤怠集計は次の4つで構成されます。

出勤・退勤の時間計算

時刻を datetime に変換し、勤務時間を計算します。

休憩時間の計算

休憩が複数あっても合計できます。

残業時間の計算

所定労働時間(例:8時間)を超えた分を計算します。

日次 → 月次 → 社員別の集計

給与計算に使える形に整形します。

勤怠データの例(よくあるExcel構造)

次のようなExcelを想定します。

  • 日付
  • 氏名
  • 出勤時刻
  • 退勤時刻
  • 休憩時間(分)
  • 備考

この構造を前提に、集計テンプレートを作ります。

勤怠集計の基本テンプレート(まずはこれを押さえる)

出勤・退勤から勤務時間を計算する例

import pandas as pd

df = pd.read_excel("kintai.xlsx")

df["出勤"] = pd.to_datetime(df["出勤時刻"])
df["退勤"] = pd.to_datetime(df["退勤時刻"])

df["勤務時間"] = (df["退勤"] - df["出勤"]).dt.total_seconds() / 3600
df["休憩時間"] = df["休憩時間(分)"] / 60

df["実働時間"] = df["勤務時間"] - df["休憩時間"]

df.to_excel("kintai_calculated.xlsx", index=False)
Python

深掘りポイント

勤務時間は「退勤 − 出勤」で計算できます。 dt.total_seconds() / 3600 を使うことで「時間」に変換できます。 休憩時間を引くことで「実働時間」が求まります。

残業時間を自動計算する(実務で必須)

所定労働時間(例:8時間)を超えた分を計算

df["残業時間"] = df["実働時間"] - 8
df["残業時間"] = df["残業時間"].apply(lambda x: x if x > 0 else 0)
Python

深掘りポイント

残業は「実働時間 − 所定労働時間」で計算できます。 マイナスは残業ではないので 0 にします。

社員別に月次勤怠を集計する(給与計算に必須)

氏名ごとに実働時間・残業時間を集計

summary = df.groupby("氏名")[["実働時間", "残業時間"]].sum()

summary.to_excel("kintai_summary.xlsx")
Python

深掘りポイント

groupby("氏名") によって社員別の集計が一瞬でできます。 給与計算に必要な「月次の総実働時間・総残業時間」が自動で出ます。

月別勤怠集計(複数月の勤怠を扱う場合)

日付から月を抽出して集計

df["日付"] = pd.to_datetime(df["日付"])
df["月"] = df["日付"].dt.to_period("M")

summary_month = df.groupby(["氏名", "月"])[["実働時間", "残業時間"]].sum()

summary_month.to_excel("kintai_monthly.xlsx")
Python

深掘りポイント

dt.to_period("M") を使うことで「2026-06」のような月単位に変換できます。 複数月の勤怠を扱う場合は必須のテクニックです。

勤怠エラーを自動検出する(品質向上に必須)

出勤・退勤の未入力を検出する例

errors = df[df["出勤"].isna() | df["退勤"].isna()]
errors.to_excel("kintai_error.xlsx", index=False)
Python

深掘りポイント

勤怠は入力ミスが非常に多い領域です。 未入力を自動検出することで、修正作業が圧倒的に楽になります。

勤怠集計を「見やすいExcel」に整形する

集計結果を複数シートにまとめる例

with pd.ExcelWriter("kintai_report.xlsx") as writer:
    df.to_excel(writer, sheet_name="元データ", index=False)
    summary.to_excel(writer, sheet_name="社員別集計")
    summary_month.to_excel(writer, sheet_name="月別集計")
Python

深掘りポイント

勤怠レポートは複数シートにまとめると見やすくなります。 提出用の勤怠レポートとしてそのまま使えます。

勤怠集計+グラフ自動生成(レポートとして完成)

月別実働時間の折れ線グラフを作成する例

from openpyxl import load_workbook
from openpyxl.chart import LineChart, Reference

summary_month.to_excel("summary_month.xlsx")

wb = load_workbook("summary_month.xlsx")
ws = wb.active

chart = LineChart()
chart.title = "月別実働時間推移"

values = Reference(ws, min_col=3, min_row=2, max_row=1 + len(summary_month))
labels = Reference(ws, min_col=2, min_row=2, max_row=1 + len(summary_month))

chart.add_data(values, titles_from_data=False)
chart.set_categories(labels)

ws.add_chart(chart, "E2")

wb.save("summary_month_chart.xlsx")
Python

深掘りポイント

勤怠は「推移」が重要です。 折れ線グラフを使うことで、 働き方の変化を視覚的に理解できます。

勤怠集計を業務で設計するときの視点

日付・時刻を必ず datetime に変換する

勤怠計算の基盤になります。

実働時間 → 残業時間の順で計算する

計算ロジックがシンプルになります。

社員別・月別の集計を作る

給与計算に必須です。

エラー検出を必ず入れる

勤怠は入力ミスが多いため、品質向上に直結します。

タイトルとURLをコピーしました