どの企業にも欠かせない業務の1つとして、勤怠管理があります。
最近では、働き方改革などによって働き方に変化が出ています。そのため、勤怠管理の見直しを迫られている企業も多いかと思います。
本記事では、様々な種類がある勤怠管理の中でも、コストをかけず手軽に管理できる表計算ソフトExcel(エクセル)を活用する方法をピックアップしていきます。
勤務時間の計算方法から自作での作り方、テンプレートなどを紹介していくので、勤怠管理の方法に悩んでいる方はぜひ参考にしてみてください。

プログラマー兼ネットワークエンジニア。 24歳でエンジニアの世界に飛び込むも、いきなり大手企業機器の検証担当に。 その後も検証をこなしていく中で、自動的にできないものかと試行錯誤しているといつの間にかプログラマーへとステップアップ。 現在はプログラミングの方が好き。
エクセルでの勤怠管理のメリット
エクセルで勤怠管理をするメリットは以下の3つになります。
コストがかからない
企業でワードなどのオフィスソフトを導入していれば、エクセルでの勤怠管理は追加の費用がかかることはなく、無料で勤怠管理ができます。
もし、勤怠管理システムを使う場合、月額の利用料が必要となります。
また、初期費用がかかることもサービスによってはあるでしょう。
勤怠管理システムの一般的な相場は、月額が1人あたり200〜500円、初期費用が無料〜数十万円ほどとなっており、すべて合わせると決して安い金額ではありません。
最小限の費用で勤怠管理を行いたい企業にとっては、コストがかからない点は大きなメリットではないでしょうか。
カスタマイズ性が高い
エクセルを使えば、関数やマクロを活用し、自由に勤怠管理表を作成できます。
例えば、シートを部署やチームごとに分けて管理したり、自社の勤怠規則に応じて自由に項目を作れます。
エクセルに慣れている方であれば、簡単に自社にあった使いやすい勤怠管理表を作ることができるでしょう。
また、どれぐらいのレベル感からスタートするのか?などを自由に決めることができるので、小さく始めることができる点もメリットになります。
操作が簡単
エクセルは事務作業において、よく使用される表計算ソフトなので、事務をしている方であればある程度の操作方法は、分かるのではないでしょうか。
そのため、エクセルの操作方法で悩む担当者の方は少ないと思います。
中には、給与計算との連携や、複雑な関数を使用する場面もあり、それなりの技量が求められることもありますが、
エクセル勤怠管理は少しずつ改良していくことができるので、初めからレベルの高い管理方法を実現させる必要もありません。
なので、操作が難しいからといった理由で運用できなくなる心配はほぼない点もメリットになるでしょう。
エクセルを使った勤怠管理表・タイムカードの作り方
エクセルを使った出勤簿の作り方を1つずつステップを踏みながら解説していきます。
従業員の雇用形態や勤務パターンによって変わるところもありますが、
エクセルでの勤怠管理表の基本的な構成は以下の通りです。
表を作る
まず初めに、出勤簿に必要な情報が記載された表を作っていきましょう。
主に必要な項目としては以下の通りになります。
- 氏名
- 日付
- 曜日
- 出勤時間
- 退勤時間
- 休憩時間
- 勤務時間
- 合計勤務時間
- 給与出勤日数
- 欠勤日数
- 遅刻日数
- 早退日数
- 休日出勤
- 有給休暇
- 普通残業時間
- 深夜残業時間
- 休日労働時間
- 休日深夜労働時間
計算式を入れる
全体の表が完成したら、勤務時間を自動計算するために計算式を入れていきましょう。
エクセル関数を用いて、各項目を算出する計算式を先頭の行に記入し、配下のセルにはコピーして同じ計算が行われるようにすると良いでしょう。
タイムカード作成で主に使用するエクセル関数は後述でまとめていますので、参考にしてみてください。
デザインを整える
最後に、全体的に見やすいように整えましょう。
まずが縦と横のセルを各項目に入力される値が見やすいように調整していきます、
また、色分けや太線、文字の大きさや位置などにこだわることによって、より出勤簿としてのクオリティが高まります。
作成したタイムカードの形式に合わせて、少しずつ調整し、理想の形を作り上げていくとよいでしょう。
【コピペOK】勤怠管理を効率化するエクセルマクロ
エクセルには、マクロといったデータ入力や収集などの作業を自動化できる機能があります。
少し、専門知識が必要な範囲になるので、無理せずできる範囲から進めていきましょう。
例として活用方法などを数点あげていきます。
入力作業の自動化
出退勤の入力を自動化するマクロを紹介します。
以下のマクロを使えば、出退勤ボタンを押すだけで時間が自動で入力されます。
出勤時
Sub startwork()
‘社員IDを取得
Dim EmpID As String
EmpID = Range(“B4”).Value
‘氏名を取得
Dim Name As String
Name = Range(“G4”).Value
‘日付を取得
Dim Today As Date
Today = Date
‘現在時刻を取得
Dim CurrentTime As Date
CurrentTime = Time
‘初期行および列の定義
Dim StartRow As Integer: StartRow = 4
Dim StartColumn As Integer: StartColumn = 13
‘M列の最終行の変数定義
Dim NewRow As Integer
‘5行M列が未入力であれば5行M列に入力する
If Cells(StartRow + 1, StartColumn).Value = “” Then
NewRow = StartRow
‘5行M列が入力済であれば最終行を取得する
Else
NewRow = Cells(StartRow, StartColumn).End(xlDown).Row
‘同じ日付に出勤時刻が既に入力されている場合、メッセージボックスを表示してマクロを終了する。
If Cells(NewRow, StartColumn).Value = Today And Cells(NewRow, StartColumn + 1).Value <> “” Then
Beep
MsgBox “出勤時刻は入力済です。”
Exit Sub
End If
End If
‘シートを保護し、マクロ実行時のみセル入力を許可する
With ThisWorkbook.Worksheets(“Sheet1”)
.Unprotect
.Protect UserInterfaceOnly:=True
End With
‘最新の日付と出勤時刻を入力する
Cells(NewRow + 1, StartColumn).Value = Today
Cells(NewRow + 1, StartColumn + 1).Value = CurrentTime
‘入力後にExcelを保存する
ThisWorkbook.Save
End Sub
退勤時
Application.ScreenUpdating = False’社員IDを取得
Dim EmpID As String
EmpID = Range(“B4”).Value’氏名を取得
Dim Name As String
Name = Range(“G4”).Value’日付を取得
Dim Today As Date
Today = Date’現在時刻を取得(退勤時間入力用)
Dim CurrentTime As Date
CurrentTime = Time’初期行および列の定義
Dim StartRow As Integer: StartRow = 4
Dim StartColumn As Integer: StartColumn = 13’M列の最終行を取得し、NewRowに格納
Dim NewRow As Integer
NewRow = Cells(StartRow, StartColumn).End(xlDown).Row’出勤時刻が入力されていない場合と、退勤時刻が既に入力されている場合にマクロを終了する。
If Cells(NewRow, StartColumn + 1).Value = “” Or Cells(NewRow, StartColumn + 2).Value <> “” Then
Beep
MsgBox “出勤時刻が未入力、もしくは退勤時刻が入力済です。”
Exit Sub
End If’マクロ実行時のみセル入力を許可する
With ThisWorkbook.Worksheets(“Sheet1”)
.Unprotect
.Protect UserInterfaceOnly:=True
End With’退勤時刻を入力する
Cells(NewRow, StartColumn + 2).Value = CurrentTime
Cells(NewRow, StartColumn + 3).Value = Cells(NewRow, StartColumn + 2).Value – Cells(NewRow, StartColumn + 1).Value – 1 / 24’転記用に出勤、退勤時刻(StartWorkHour, EndWorkHour)を変数に一時格納する
Dim StartWorkHour As Date
Dim EndWorkHour As Date
StartWorkHour = Cells(NewRow, StartColumn + 1).Value
EndWorkHour = Cells(NewRow, StartColumn + 2).Value’勤怠集計ファイルを開く
Dim Path As String
Dim Filename As String
Path = “C:\Kintai\”
Filename = “勤怠集計.xlsx”
Workbooks.Open Path & Filename’勤怠集計.xlsxの行列の初期位置を指定
Dim ToRow As Integer: ToRow = 2
Dim ToColumn As Integer: ToColumn = 2’B列の最終行の変数定義
Dim LastRow As Integer’3行B列が未入力であれば3行目に入力する
If Cells(ToRow + 1, ToColumn).Value = “” Then
LastRow = ToRow
Else
‘3行B列が入力済であれば最終行を確認して最終行に入力する。
LastRow = Cells(ToRow, ToColumn).End(xlDown).Row
End If
‘勤怠集計.xlsxの最新行に日付、社員番号、氏名、出勤、退勤、勤務時間を入力する
With ActiveSheet
.Cells(LastRow + 1, ToColumn).Value = Today ‘日付
.Cells(LastRow + 1, ToColumn + 1).Value = EmpID ‘社員番号
.Cells(LastRow + 1, ToColumn + 2).Value = Name ‘社員氏名
.Cells(LastRow + 1, ToColumn + 3).Value = StartWorkHour ‘出勤時間
.Cells(LastRow + 1, ToColumn + 4).Value = EndWorkHour ‘退勤時間
.Cells(LastRow + 1, ToColumn + 5).Value = EndWorkHour – StartWorkHour – 1 / 24 ‘勤務時間 (9時間から休憩1時間:1/24を引く)
End With
‘勤怠集計.xlsxを保存して閉じる
ActiveWorkbook.Save
ActiveWorkbook.Close
‘Excel画面更新を表示
Application.ScreenUpdating = True
‘タイムカード.xlsmを保存して、勤怠処理完了のメッセージを表示する。
ThisWorkbook.Save
Beep
MsgBox “勤怠処理が完了しました。”
End Sub
データの集計・分析
次に、従業員のデータを集計し、分析するマクロを紹介します。
締め日に手作業でデータを集計するのは大変な作業です。しかし、このマクロを使うことによって自動で集計してくれます。
Sub 月別計算()
Dim dataSheet As Worksheet
Dim resultSheet As Worksheet
Dim lastRow As Long
Dim month As Integer
Dim i As Integer
‘ データが格納されているシートと結果を表示するシートを指定
Set dataSheet = ThisWorkbook.Sheets(“データ”)
Set resultSheet = ThisWorkbook.Sheets(“月別計算”)
‘ データの最終行を取得
lastRow = dataSheet.Cells(dataSheet.Rows.Count, “A”).End(xlUp).Row
‘ 月ごとにデータを合計
For i = 2 To lastRow
month = Month(dataSheet.Cells(i, 1).Value)
resultSheet.Cells(month, 2).Value = resultSheet.Cells(month, 2).Value + dataSheet.Cells(i, 2).Value
Next i
End Sub
レポートの作成
最後に各種データを集計した後、グラフなどを作成できるマクロを紹介します。
Dim ws As Worksheet
Dim rng As Range
Dim lastRow As Long
Dim lastCol As Long’ 対象のシートを指定
Set ws = ThisWorkbook.Sheets(“データ”)’ データの範囲を取得
lastRow = ws.Cells(ws.Rows.Count, “A”).End(xlUp).Row
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column’ データの範囲を指定
Set rng = ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol))’ 表の罫線を設定
rng.Borders.LineStyle = xlContinuous’ ヘッダーの背景色を変更
rng.Rows(1).Interior.Color = RGB(200, 200, 200)
End Sub
エクセルで勤怠管理をする際に使える関数
エクセルで勤怠管理を効率的に行うためには、特定の関数を利用することが非常に有効です。
具体的な場面に合わせて適切な関数を使うことで、作業時間の計算や休日の処理などを簡単に行うことができます。
ここでは、勤怠管理でよく使われる関数を紹介し、それぞれの使用例についても詳しく説明します。
SUM関数で労働時間の計算ができる
SUM関数は、複数のセルに入力された数値を合計するための基本的な関数です。
エクセルでの勤怠管理において、一ヶ月の労働時間の合計を計算する際に非常に便利です。
使用方法は簡単で、以下のように入力するだけで、指定した範囲の数値を合計します。
具体例として、A1からA30までのセルに毎日の労働時間が入力されている場合、総労働時間を計算するにはこのように入力します。
SUM関数はシンプルながら使い勝手の良い関数で、効率的な勤怠管理に欠かせません。
TIME関数で出勤時間や退勤時間を記録できる
TIME関数は、指定した時、分、秒を使って時間を生成する関数です。
エクセルでの勤怠管理において、出勤時間や退勤時間を記録する際に非常に役立ちます。
使用方法は簡単で、以下のように入力するだけで、指定した時、分、秒を組み合わせた時間を生成します。
具体例として、出勤時間が9時30分0秒の場合 、TIME関数を使って以下のように入力します。
TIME関数は、時間を簡単に管理するための便利なエクセル関数で、正確な勤怠記録に欠かせません。
TEXT関数で労働時間を特定のフォーマットで表示できる
TEXT関数は、数値を指定した書式に変換するための関数です。
エクセルでの勤怠管理において、労働時間を特定のフォーマットで表示したい場合に非常に役立ちます。
使用方法はシンプルで、以下のように入力するだけで、指定した書式で数値を表示できます。
具体例として、労働時間を「時間:分」の形式で表示したい場合、B1セルに労働時間が入力されているときに以下のように入力します。
TEXT関数は、データの見やすさを向上させ、効率的な勤怠管理をサポートする便利なエクセル関数です。
IF関数で条件に合わせた計算や表示ができる
IF関数は、指定した条件によって異なる値を返す関数です。
エクセルでの勤怠管理において、特定の条件に合わせた計算や表示を行う際に非常に便利です。
少しだけ複雑ですが、以下のように入力するだけで、条件に基づいた値を返します。
具体例として、労働時間が8時間以上の場合に「フルタイム」と表示し、それ以外の場合に「パートタイム」と表示したい場合、C1セルに労働時間が入力されているときに以下のように入力します。
IF関数は、条件に合わせたデータの処理を簡単に行うことができ、柔軟な勤怠管理を実現するためのエクセル関数です。
COUNTIF関数で条件に合わせた日数や労働時間をカウントできる
COUNTIF関数は、指定した範囲内で特定の条件に合うセルの数を数える関数です。
エクセルでの勤怠管理において、特定の条件の日数や労働時間をカウントする際に非常に便利です。
使用方法は簡単で、以下のように入力するだけで、条件に一致するセルの数を数えます。
具体例として、A1からA30までのセルに労働時間が入力されており、8時間以上働いた日数をカウントしたい場合、以下のように入力します。
COUNTIF関数は、特定の条件に合わせたデータの集計を簡単に行うことができ、勤怠管理の効率化に役立つエクセル関数です。
NETWORKDAYS関数で営業日数を計算できる
NETWORKDAYS関数は、指定した期間内の営業日数(平日の日数)を計算するためのエクセル関数です。
勤怠管理において、従業員の出勤日数や有給休暇の日数を正確に把握する際に非常に便利です。
使用方法はシンプルで、開始日と終了日を指定するだけで、その期間内の営業日数を計算できます。
具体例として、A1セルに開始日、B1セルに終了日が入力されている場合、その期間の営業日数を計算するには以下のように入力します。
このエクセル関数は、祝日や特定の休業日を除外するオプションもあり、より正確な営業日数を求めることが可能です。
FLOOR関数で時間単位を切り捨てて計算できる
FLOOR関数は、数値を指定した基準値の倍数に切り捨てるエクセル関数です。
勤怠管理において、労働時間を一定の時間の単位に切り捨てて計算する際に非常に便利です。
使用方法はシンプルで、切り捨てたい数値と基準値を指定するだけで、その基準値に切り捨てた数値を求めることができます。
具体例として、労働時間がB1セルに入力されている場合、15分単位に切り捨てるには以下のように入力します。
精度が求められる勤怠管理や経費計算において、正確で統一された数値を得るために欠かせない関数です。
CEILING関数で時間単位を切り上げて計算できる
CEILING関数は、数値を指定した基準値の倍数に切り上げるエクセル関数です。
FLOOR関数とは、CEILING関数は指定した値に向かって数値を切り上げる点が異なります。
勤怠管理において、労働時間を一定の単位(例えば15分単位や30分単位)に切り上げて計算する際に非常に便利です。
使用方法はFLOOR関数と同じく、切り上げたい数値と基準値を指定するだけで、その基準値に切り上げた数値を求めることができます。
具体例として、労働時間がB1セルに入力されている場合、15分単位に切り上げるには以下のように入力します。
これにより、労働時間や経費を正確に管理し、業務の精度を高めることができます。
【無料】勤怠管理テンプレート
1からエクセルで勤怠管理表を作るのは、少し手間な作業でもあります。
そういった場合に、無料で公開されているテンプレートを使うのもおすすめです。
いくつかサイトを紹介しますので、ぜひ参考にしてみてください。
ビズオーシャン
ビズオーシャンには、28,000点以上の書式・テンプレートが用意されています。
無料版以外に、数百円程度の有料のものも用意されていますので、自社に合ったテンプレートを探すことができます。
ビズオーシャンでは以下のテンプレートがおすすめです。
- 勤怠管理表001
出勤・欠勤日数や残業時間を自動で計算。 - 勤怠管理と給与計算(時給)
時給や各種手当などを設定し、自動で給与計算され、給与明細も出力できる。
EXCEL勤怠テンプレート
Excel勤怠テンプレートには、初めからマクロが組まれているテンプレートなどが無料で公開されています。
おすすめのテンプレートは以下の通りです。
- 日またぎ勤務や深夜残業手当の計算もOKな時給計算用の勤怠管理表テンプレート
マクロが組みこまれており、労働時間や深夜残業の計算、給与計算ができる。 - 普通残業と深夜残業、遅刻・早退を計算する出勤簿(勤怠管理表)
打刻機能付きでタイムレコーダーとして利用可能。
みんなのExcelテンプレート(みんエク!)
みんなのExcelテンプレートは、さまざまなビジネスに関するテンプレートを公開しています。
おすすめのテンプレートは以下の通りです。
- スタッフ勤務表_予実付き01.xlsx
スタッフのシフトと時給管理を予定と実績で計算できる。
Microsoft Office のテンプレート
Microsoft Officeのテンプレートには、2,000点以上の無料テンプレートを公開しています。
洗練されたデザインのテンプレートが多く、在宅勤務対応の出勤表などもあります。
Microsoft Officeのテンプレートでは以下のテンプレートがおすすめです。
- シフト管理表 (月別・日別)
シフト別の勤怠状況がグラフで表示される。 - 在宅勤務対応出勤表
従業員の在宅勤務やオフィス勤務など勤務状況を管理可能。
Microsoft Officeのテンプレートの公式サイトはコチラ!
エクセルでの勤怠管理に悩まれていませんか?Jiteraなら、御社の業務に最適化されたオリジナルの勤怠管理システムをスピーディーに開発いたします。
Jiteraでは、要件定義から開発まで一貫してサポートし、御社の業務フローに完全にマッチした勤怠管理システムをご提供いたします。
Jiteraの勤怠管理システム開発の強み
- 要件定義からJiteraのAIが自動でアプリ・システムを開発
- 他社の3倍のスピードと高品質を実現
- 御社の勤怠ルールや就業形態に合わせてカスタマイズ可能
- 給与計算や人事システムとのスムーズな連携
Jiteraの勤怠管理システムなら、出退勤管理や休暇申請、シフト管理など、全ての勤怠業務を自動化・効率化できます。膨大な工数がかかる勤怠集計やデータ分析も、ワンクリックで瞬時に完了。人為的ミスのリスクも大幅に低減します。
システムは、御社の成長や業務変化に合わせて柔軟にカスタマイズ可能。拡張性が高く、長期的に使える勤怠管理基盤を構築できます。手作業から開放され、業務の生産性が劇的に向上するでしょう。
エクセルに代わる、新しい勤怠管理のカタチを実現しませんか。まずはお気軽にご相談ください。
今すぐJiteraに無料相談する
まとめ:エクセルでの勤怠管理はマクロを使って効率化
今回はエクセルでの勤怠管理方法を解説しました。
無料で公開されているテンプレートを使った簡単な方法から、マクロを使用した高度な方法まで、さまざまなレベル感で勤怠管理できることが伝わったのではないでしょうか。
エクセルは柔軟性が高く、無料でタイムカードを作成できるだけでなく、カスタマイズ性や操作の簡単さも魅力です。
最初は基本的な関数を使い始め、徐々にマクロを活用して、より効率的にステップアップすることをおすすめします。
ツール開発やIT関連に関する質問、相談、案件や依頼がある場合、実績豊富な株式会社Jiteraに一度ご相談ください。