エクセルで勤怠管理をする方法!勤務時間の計算方法や自作での作り方、テンプレートまで紹介

どの企業にも欠かせない業務の1つとして、勤怠管理があります。

最近では、働き方改革などによって働き方に変化が出ています。そのため、勤怠管理の見直しを迫られている企業も多いかと思います。

本記事では、様々な種類がある勤怠管理の中でも、コストをかけず手軽に管理できる表計算ソフトExcel(エクセル)を活用する方法をピックアップしていきます。

勤務時間の計算方法から自作での作り方、テンプレートなどを紹介していくので、勤怠管理の方法に悩んでいる方はぜひ参考にしてみてください。

アバター画像
監修者 TAKETO

プログラマー兼ネットワークエンジニア。 24歳でエンジニアの世界に飛び込むも、いきなり大手企業機器の検証担当に。 その後も検証をこなしていく中で、自動的にできないものかと試行錯誤しているといつの間にかプログラマーへとステップアップ。 現在はプログラミングの方が好き。

\エキスパートが回答!/
この記事に関する質問はこちら
記事に関するご質問以外にも、システム開発の依頼やAIの導入相談なども受け付けております。

    会社名必須
    必須
    必須
    Eメール必須
    電話番号必須
    ご依頼内容必須

    エクセルでの勤怠管理のメリット

    エクセルでの勤怠管理のメリット
    エクセルで勤怠管理をするメリットは以下の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

    退勤時

    Sub endwork()’マクロ実行中はExcel画面更新を非表示
    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

    レポートの作成

    最後に各種データを集計した後、グラフなどを作成できるマクロを紹介します。

    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

    エクセルで勤怠管理をする際に使える関数

    おすすめのRuby開発会社10選!初心者向けにRubyの基本から会社選びのポイントまで詳しく解説!

    エクセルで勤怠管理を効率的に行うためには、特定の関数を利用することが非常に有効です。

    具体的な場面に合わせて適切な関数を使うことで、作業時間の計算や休日の処理などを簡単に行うことができます。

    ここでは、勤怠管理でよく使われる関数を紹介し、それぞれの使用例についても詳しく説明します。

    SUM関数で労働時間の計算ができる

    SUM関数は、複数のセルに入力された数値を合計するための基本的な関数です。

    エクセルでの勤怠管理において、一ヶ月の労働時間の合計を計算する際に非常に便利です。

    使用方法は簡単で、以下のように入力するだけで、指定した範囲の数値を合計します。

    =SUM(範囲)

    具体例として、A1からA30までのセルに毎日の労働時間が入力されている場合、総労働時間を計算するにはこのように入力します。

    =SUM(A1:A30)

    SUM関数はシンプルながら使い勝手の良い関数で、効率的な勤怠管理に欠かせません。

    TIME関数で出勤時間や退勤時間を記録できる

    TIME関数は、指定した時、分、秒を使って時間を生成する関数です。

    エクセルでの勤怠管理において、出勤時間や退勤時間を記録する際に非常に役立ちます。

    使用方法は簡単で、以下のように入力するだけで、指定した時、分、秒を組み合わせた時間を生成します。

    =TIME(時, 分, 秒)

    具体例として、出勤時間が9時30分0秒の場合 、TIME関数を使って以下のように入力します。

    =TIME(9, 30, 0)

    TIME関数は、時間を簡単に管理するための便利なエクセル関数で、正確な勤怠記録に欠かせません。

    TEXT関数で労働時間を特定のフォーマットで表示できる

    TEXT関数は、数値を指定した書式に変換するための関数です。

    エクセルでの勤怠管理において、労働時間を特定のフォーマットで表示したい場合に非常に役立ちます。

    使用方法はシンプルで、以下のように入力するだけで、指定した書式で数値を表示できます。

    =TEXT(値, “書式”)

    具体例として、労働時間を「時間:分」の形式で表示したい場合、B1セルに労働時間が入力されているときに以下のように入力します。

    =TEXT(B1, “hh:mm”)

    TEXT関数は、データの見やすさを向上させ、効率的な勤怠管理をサポートする便利なエクセル関数です。

    IF関数で条件に合わせた計算や表示ができる

    IF関数は、指定した条件によって異なる値を返す関数です。

    エクセルでの勤怠管理において、特定の条件に合わせた計算や表示を行う際に非常に便利です。

    少しだけ複雑ですが、以下のように入力するだけで、条件に基づいた値を返します。

    =IF(条件, 真の場合の値, 偽の場合の値)

    具体例として、労働時間が8時間以上の場合に「フルタイム」と表示し、それ以外の場合に「パートタイム」と表示したい場合、C1セルに労働時間が入力されているときに以下のように入力します。

    =IF(C1 >= 8, “フルタイム”, “パートタイム”)

    IF関数は、条件に合わせたデータの処理を簡単に行うことができ、柔軟な勤怠管理を実現するためのエクセル関数です。

    COUNTIF関数で条件に合わせた日数や労働時間をカウントできる

    COUNTIF関数は、指定した範囲内で特定の条件に合うセルの数を数える関数です。

    エクセルでの勤怠管理において、特定の条件の日数や労働時間をカウントする際に非常に便利です。

    使用方法は簡単で、以下のように入力するだけで、条件に一致するセルの数を数えます。

    =COUNTIF(範囲, 条件)

    具体例として、A1からA30までのセルに労働時間が入力されており、8時間以上働いた日数をカウントしたい場合、以下のように入力します。

    =COUNTIF(A1:A30, “>=8”)

    COUNTIF関数は、特定の条件に合わせたデータの集計を簡単に行うことができ、勤怠管理の効率化に役立つエクセル関数です。

    NETWORKDAYS関数で営業日数を計算できる

    NETWORKDAYS関数は、指定した期間内の営業日数(平日の日数)を計算するためのエクセル関数です。

    勤怠管理において、従業員の出勤日数や有給休暇の日数を正確に把握する際に非常に便利です。

    使用方法はシンプルで、開始日と終了日を指定するだけで、その期間内の営業日数を計算できます。

    =NETWORKDAYS(開始日, 終了日)

    具体例として、A1セルに開始日、B1セルに終了日が入力されている場合、その期間の営業日数を計算するには以下のように入力します。

    =NETWORKDAYS(A1, B1)

    このエクセル関数は、祝日や特定の休業日を除外するオプションもあり、より正確な営業日数を求めることが可能です。

    FLOOR関数で時間単位を切り捨てて計算できる

    FLOOR関数は、数値を指定した基準値の倍数に切り捨てるエクセル関数です。

    勤怠管理において、労働時間を一定の時間の単位に切り捨てて計算する際に非常に便利です。

    使用方法はシンプルで、切り捨てたい数値と基準値を指定するだけで、その基準値に切り捨てた数値を求めることができます。

    =FLOOR(数値, 基準値)

    具体例として、労働時間がB1セルに入力されている場合、15分単位に切り捨てるには以下のように入力します。

    =FLOOR(B1, 0.25)

    精度が求められる勤怠管理や経費計算において、正確で統一された数値を得るために欠かせない関数です。

    CEILING関数で時間単位を切り上げて計算できる

    CEILING関数は、数値を指定した基準値の倍数に切り上げるエクセル関数です。

    FLOOR関数とは、CEILING関数は指定した値に向かって数値を切り上げる点が異なります。

    勤怠管理において、労働時間を一定の単位(例えば15分単位や30分単位)に切り上げて計算する際に非常に便利です。

    使用方法はFLOOR関数と同じく、切り上げたい数値と基準値を指定するだけで、その基準値に切り上げた数値を求めることができます。

    =CEILING(数値, 基準値)

    具体例として、労働時間がB1セルに入力されている場合、15分単位に切り上げるには以下のように入力します。

    =CEILING(B1, 0.25)

    これにより、労働時間や経費を正確に管理し、業務の精度を高めることができます。

    【無料】勤怠管理テンプレート

    1からエクセルで勤怠管理表を作るのは、少し手間な作業でもあります。

    そういった場合に、無料で公開されているテンプレートを使うのもおすすめです。

    いくつかサイトを紹介しますので、ぜひ参考にしてみてください。

    ビズオーシャン

    ビズオーシャンには、28,000点以上の書式・テンプレートが用意されています。

    無料版以外に、数百円程度の有料のものも用意されていますので、自社に合ったテンプレートを探すことができます。

    ビズオーシャンでは以下のテンプレートがおすすめです。

    • 勤怠管理表001
      出勤・欠勤日数や残業時間を自動で計算。
    • 勤怠管理と給与計算(時給)
      時給や各種手当などを設定し、自動で給与計算され、給与明細も出力できる。

    ビズオーシャンの公式サイトはコチラ!

    EXCEL勤怠テンプレート

    Excel勤怠テンプレートには、初めからマクロが組まれているテンプレートなどが無料で公開されています。

    おすすめのテンプレートは以下の通りです。

    • 日またぎ勤務や深夜残業手当の計算もOKな時給計算用の勤怠管理表テンプレート
      マクロが組みこまれており、労働時間や深夜残業の計算、給与計算ができる。
    • 普通残業と深夜残業、遅刻・早退を計算する出勤簿(勤怠管理表)
      打刻機能付きでタイムレコーダーとして利用可能。

    Excel勤怠テンプレートの公式サイトはコチラ!

    みんなのExcelテンプレート(みんエク!)

    みんなのExcelテンプレートは、さまざまなビジネスに関するテンプレートを公開しています。

    おすすめのテンプレートは以下の通りです。

    • スタッフ勤務表_予実付き01.xlsx
      スタッフのシフトと時給管理を予定と実績で計算できる。

    みんなのExcelテンプレートの公式サイトはコチラ!

    Microsoft Office のテンプレート

    Microsoft Officeのテンプレートには、2,000点以上の無料テンプレートを公開しています。

    洗練されたデザインのテンプレートが多く、在宅勤務対応の出勤表などもあります。

    Microsoft Officeのテンプレートでは以下のテンプレートがおすすめです。

    • シフト管理表 (月別・日別)
      シフト別の勤怠状況がグラフで表示される。
    • 在宅勤務対応出勤表
      従業員の在宅勤務やオフィス勤務など勤務状況を管理可能。

    Microsoft Officeのテンプレートの公式サイトはコチラ!

    エクセルでの勤怠管理に悩まれていませんか?Jiteraなら、御社の業務に最適化されたオリジナルの勤怠管理システムをスピーディーに開発いたします。Jitera

    Jiteraでは、要件定義から開発まで一貫してサポートし、御社の業務フローに完全にマッチした勤怠管理システムをご提供いたします。

    Jiteraの勤怠管理システム開発の強み

    • 要件定義からJiteraのAIが自動でアプリ・システムを開発
    • 他社の3倍のスピードと高品質を実現
    • 御社の勤怠ルールや就業形態に合わせてカスタマイズ可能
    • 給与計算や人事システムとのスムーズな連携

    Jiteraの勤怠管理システムなら、出退勤管理や休暇申請、シフト管理など、全ての勤怠業務を自動化・効率化できます。膨大な工数がかかる勤怠集計やデータ分析も、ワンクリックで瞬時に完了。人為的ミスのリスクも大幅に低減します。
    システムは、御社の成長や業務変化に合わせて柔軟にカスタマイズ可能。拡張性が高く、長期的に使える勤怠管理基盤を構築できます。手作業から開放され、業務の生産性が劇的に向上するでしょう。
    エクセルに代わる、新しい勤怠管理のカタチを実現しませんか。まずはお気軽にご相談ください。
    今すぐJiteraに無料相談する

    まとめ:エクセルでの勤怠管理はマクロを使って効率化

    今回はエクセルでの勤怠管理方法を解説しました。

    無料で公開されているテンプレートを使った簡単な方法から、マクロを使用した高度な方法まで、さまざまなレベル感で勤怠管理できることが伝わったのではないでしょうか。

    エクセルは柔軟性が高く、無料でタイムカードを作成できるだけでなく、カスタマイズ性や操作の簡単さも魅力です。

    最初は基本的な関数を使い始め、徐々にマクロを活用して、より効率的にステップアップすることをおすすめします。

    ツール開発やIT関連に関する質問、相談、案件や依頼がある場合、実績豊富な株式会社Jiteraに一度ご相談ください。

    Jiteraへの相談はコチラから

    例:開発手順、ツール、プロンプト

    メルマガ登録

    社内で話題になった「生成AIに関するニュース」をどこよりも早くお届けします。