「勤怠管理をエクセルで行いたい」「勤怠管理をエクセルで行っているが計算や関数式の設定がうまくいかない」という方は多いのではないでしょうか。

勤怠管理表をエクセルで作る場合、残業時間の計算や労働時間の集計の関数式につまづく方が多い印象です。

本記事では、エクセルで関数を既に入力してある勤怠管理表を掲載するので、これを使えばすぐに勤怠管理が行えます。

また、管理表を自作したい方向けに、関数式の詳細や表の作成方法も解説していきます。マクロの活用といった難しいことは行っていないので、ぜひ気軽にお読みください。

※エクセルで作成する勤怠管理表は、あくまでシンプルな勤怠管理を行うためのものです。以下のような企業ではエクセルではなく、勤怠管理システムを使用することをおすすめします。

  • 自社の勤務ルールが複雑である(変形労働時間制を採用している・休憩が複数回あるなど)
  • 今後、企業規模が大きくなる見込みがある
  • 既にエクセルの勤怠管理表を利用しているが、担当者しか仕組みを理解していない(その社員がいないと勤怠管理ができなくなってしまう)

目次

    関数入力済みのエクセル勤怠管理表

    今回は、一般的な「8時間×週5日間」といった働き方に対応した勤怠管理表を作成していきます。

    本章にテンプレートを掲載するので、ぜひダウンロードしてみてください。そのまま使用していただくこともできますし、これを参考にご自身で一から作成されるのも良いでしょう。

    図:記事内で解説する関数式で作成できるエクセル勤怠管理表
    図:記事内で解説する関数式で作成できるエクセル勤怠管理表

    勤怠管理表のテンプレート.xlsx

    ※本ファイルの内容についての保証、利用に関し弊社は一切の責任を負いかねますのでご了承ください。

    列の説明

    A列

    日にち

    B列

    曜日

    C列~F列

    出勤時刻・退勤時刻・休憩開始時刻・休憩終了時刻

    C列~F列を入力すると、薄いグレーの背景の部分(労働時間や残業時間など)が自動計算されます。

    この勤怠管理表は、以下のような手順ですぐに使うことができます。

    1. テンプレートをダウンロードする(もしくは同様の枠組みと関数を入力する)
    2. B列に曜日を入力する
    3. 日々の勤怠管理でC列~F列を入力する(タイムカードの記録を入力するなど)
    4. グレーの部分が自動計算される

    各列で使われている関数の詳細を確認したい方や、勤怠管理表を一から自作したい方は、以下を参考にしてください。

    G列:休憩時間を計算する関数式

    G4に次の関数式を入力しています。

    関数式

    =IFERROR(IF(E4>F4,F4+1-E4,F4-E4),"")

    式の意味

    エラーだったら空欄にする。休憩開始時刻の方が休憩終了時刻より大きかったら、休憩終了時刻に1を足して休憩開始時刻をひいた数を表示する。そうでなかったら休憩終了時刻から休憩開始時刻をひいた数を表示する。

    C列~F列を入力すると、薄いグレーの背景の部分(労働時間や残業時間など)が自動計算されます。

    この勤怠管理表は、以下のような手順ですぐに使うことができます。

    1. テンプレートをダウンロードする(もしくは同様の枠組みと関数を入力する)
    2. B列に曜日を入力する
    3. 日々の勤怠管理でC列~F列を入力する(タイムカードの記録を入力するなど)
    4. グレーの部分が自動計算される

    各列で使われている関数の詳細を確認したい方や、勤怠管理表を一から自作したい方は、以下を参考にしてください。

    G列:休憩時間を計算する関数式

    G4に次の関数式を入力しています。

    関数式

    =IFERROR(IF(E4>F4,F4+1-E4,F4-E4),"")

    式の意味

    エラーだったら空欄にする。休憩開始時刻の方が休憩終了時刻より大きかったら、休憩終了時刻に1を足して休憩開始時刻をひいた数を表示する。そうでなかったら休憩終了時刻から休憩開始時刻をひいた数を表示する。

    ※34行目までオートフィルで自動入力しています。

    式中の「""」は空欄を意味しています。

    この関数を「休憩時間(G列)」に反映させておくことで、日々の「休憩開始時刻(E列)」と「休憩終了時刻(F列)」を入力するだけで自動的に休憩時間が算出され、「休憩時間(G列)」に表示されるようになります。

    H列:労働時間を計算する関数式

    H4に次の関数式を入力しています。

    関数式

    =IFERROR(IF(C4>D4,D4+1-C4-G4,D4-C4-G4),"")

    式の意味

    エラーだったら空欄にする。出勤時刻の方が退勤時刻より大きかったら、退勤時刻に1を足して出勤時刻と休憩時間をひいた数を表示する。そうでなかったら退勤時刻から出勤時刻と休憩時間をひいた数を表示する。

    ※34行目までオートフィルで自動入力しています。

    この関数を「労働時間(H列)」に反映させておくことで、日々の「出勤時刻(C列)」や「退勤時刻(D列)」の入力によって自動的に労働時間が算出され、「労働時間(H列)」に表示されます。

    I列:残業時間を計算する関数式

    I4に次の関数式を入力しています。

    関数式

    =IF(H4-"8:00">TIME(0,0,59),H4-"8:00","")

    式の意味

    労働時間から8時間をひいた数が59秒を超えていたら、その数を残業時間として表示する。そうでなかったら空欄とする。

    ※34行目までオートフィルで自動入力しています。

    この関数を「残業時間(I列)」に反映させておくことで、「労働時間(H列)」から8時間を減算して1分以上あるか(つまり残業があったかどうか)を判定します。残業があった場合には自動的に残業時間が算出され、「残業時間(I列)」に表示されます。

    ※なお、労働基準法では1日の法定労働時間が8時間と定められており、就業規則等で特に定めがない場合は、この8時間を超えた部分が残業時間となります。他に、週の労働時間の合計で判定する残業時間もあります。その場合については「勤怠管理で記録必須な4つの項目とは?残業時間等の算出方法も紹介」をご参照ください。

    J列:深夜労働時間を計算する関数式

    J4に次の関数式を入力しています。

    関数式

    =IFS(AND(C4<TIME(22,0,1),D4<TIME(5,0,1),C4>D4),D4+1-"22:00",AND(C4>TIME(4,59,59),D4>TIME(21,59,59)),D4-"22:00",AND(C4>D4,C4<TIME(21,59,59),D4>TIME(4,59,59)),TIME(7,0,0),TRUE,"")

    式の意味

    • 出勤時刻が22時より前かつ退勤時刻が5時より前かつ出勤時刻が退勤時刻より大きいとき(例:出勤が18:00、退勤が3:00のとき18>3)は、退勤時刻に1を足して22時間をひいた数を表示する。

    • 出勤時刻が5時以降かつ退勤時刻が22時以降のときは、退勤時刻から22時間をひいた数を表示する。

    • 出勤時刻が退勤時刻より大きく、かつ出勤時刻が22時前かつ退勤時刻が5時以降のときは、7時間と表示する。

    • 上記以外の場合は空欄とする。

    ※34行目までオートフィルで自動入力しています。

    深夜労働はさまざまなパターンがありますが、今回は「出勤時刻が朝5時以降」であることを前提として3パターンに対応した関数式となっています。条件式が3つあるのでifs関数を使用しましたが、これをif関数に書き換えると次のようになります。

    関数式

    =IF(AND(C4<TIME(22,0,1),D4<TIME(5,0,1),C4>D4),D4+1-"22:00",IF(AND(C4>TIME(4,59,59),D4>TIME(21,59,59)),D4-"22:00",IF(AND(C4>D4,C4<TIME(21,59,59),D4>TIME(4,59,59)),TIME(7,0,0),IF(TRUE,"",""))))

    一部ifs関数が使えないエクセルのバージョンもあるので、その場合はif関数の式を入力してください。

    これらの関数を「深夜労働(J列)」に反映させておくことで、「出勤時刻(C列)」と「退勤時刻(D列)」に入力された時刻が設定したパターンに該当していないかを検証します。該当した場合は、深夜労働時間を計算して「深夜労働(J列)」に表示します。

    ※なお、22:00から翌日5:00までの時間帯に労働した場合は深夜労働となります。

    K列:休日労働時間を計算する関数式

    K4に次の関数式を入力しています。

    関数式

    =IF(AND(B4="日",H4<>""),H4,"")

    式の意味

    曜日が日曜日かつ労働時間が空欄でなかったら、労働時間を休日労働時間として表示する。そうでなかったら空欄とする。

    ※34行目までオートフィルで自動入力しています。

    今回は、日曜日を法定休日とした関数式となっています。式中の「<>」は「以外」を意味しています。

    この関数を「休日労働(K列)」に反映させておくことで、日曜日に労働時間の入力があるかどうかを判定します。入力があった場合には「休日労働(K列)」に労働時間が表示されます。

    ※なお、法定休日に労働した時間全てが休日労働時間となります。法定休日は、就業規則等で特に定めがない限り、次に該当します。

    • 毎週1日の休日
    • 週間を通じて4日以上の休日

    H1周辺:各時間の集計を行う関数式

    上部の労働時間集計セル(H1付近)では、各時間の合計を表示します。

    使用している関数式は、それぞれ以下の通りです。

    I1セル(労働時間)

    =SUM(H4:H34)

    K1セル(残業時間)

    =ROUND(SUM(I4:I34)*24,0)/24

    I2セル(深夜労働時間)

    =ROUND(SUM(J4:J34)*24,0)/24

    K2セル(休日労働時間)

    =ROUND(SUM(K4:K34)*24,0)/24

    I1、K1、I2、K2セルについては、24時間以上の時間を表示できるように、表示形式を「ユーザー定義」の「[h]:mm:ss」や「[h]:mm」とします。

    また、K1セル(残業時間)・I2セル(深夜労働時間)・K2セル(休日労働時間)に関しては、集計した時間を30分単位で四捨五入するための関数式を使用しています。

    関数式(例)

    =ROUND(SUM(I4:I34)*24,0)/24
    式の意味

    時間を四捨五入できる10進数の形にするため、24を乗算してround関数で小数点以下を四捨五入し、また24で除算して時間の形に戻す

    ※エクセルでは、24時間を10進数で表すと1になります。

    ▼例:月の残業時間合計が10:45(10時間45分)となった場合の計算

    1. 10:45(10進数では0.44791...)に24を乗算して258:00(10進数では10.75)
    2. 258:00(10進数では10.75)を四捨五入して264:00(10進数では11)
    3. 264:00(10進数では11)を24で除算して11:00(10進数では0.45833...)

    本来、労働時間の丸め処理は禁止されていますが、割増賃金が発生する時間については事務処理の簡素化を目的に、次のとおり例外が認められています。

    時間外労働

    深夜労働

    休日労働

    1カ月における各時間数を合計したときに1時間未満の端数がある場合、30分未満の端数を切り捨て、それ以上を1時間に切り上げることができる

    通常の(割増賃金が発生しない)労働時間は、1日単位はもちろん1カ月単位でも1分単位で把握しなければならず、“1日の労働時間のうち5分未満を切り捨てる”といったことは認められていないので注意してください。

    勤怠管理表作成に便利なエクセル知識

    次は、勤怠管理表の作成に活用できるエクセルの知識を解説します。

    「勤怠管理表を自作したい」「他のテンプレートをカスタマイズしたい」といった際に、ぜひ参考にしてください。

    • 関数式中の時間は「""」で囲む
    • +1をして時間計算のマイナスエラーを防ぐ
    • 集計時間などに、24時間以上の数字を表示させる設定を行う
    • 入力ミスや表記ゆれを検知して、エラーが出る設定にする
    • オートフィルで関数式を自動入力する
    • 「0:00」が表示されないように設定し、表をすっきりさせる

    関数式中の時間は「""」で囲む

    8:00のようにコロンを時分の間に入れた時刻表示は、関数式中で文字列扱いされます。関数式中に文字列があると正しく計算されないので、文字列を入力するときはダブルクォーテーション("")で囲むことでエラーを防ぎます。

    例:残業時間を計算する関数式【=IF(H4-"8:00">TIME(0,0,59),H4-"8:00","")】

    本記事のテンプレートでは、残業時間や深夜労働時間を計算する関数式でこの知識を使っています。

    +1をして時間計算のマイナスエラーを防ぐ

    労働時間を計算するときに、出勤時刻の方が退勤時刻より大きい場合、退勤時刻から出勤時刻を減算すると、セルに「#####」と表示されます。これは時間計算の結果が負の値となったため表示されるエラーです。

    例:出勤時刻15:00、退勤時刻0:00のとき、労働時間を0:00-15:00としたら「#####」となった

    エクセルにとっての1は、1日(24時間)を意味します。そのため上記の例の場合は、退勤時刻に1を加算することでマイナスエラーを防ぎます。

    例:休憩時間を計算する関数式【=IFERROR(IF(E4>F4,F4+1-E4,F4-E4),"")】

    本記事のテンプレートでは、休憩時間、労働時間、深夜労働時間を計算する関数式でこの知識を使っています。

    集計時間などに、24時間以上の数字を表示させる設定を行う

    エクセルで160:00のような24時間以上の時間を表示させる場合には、表示形式を「ユーザー定義」の「[h]:mm:ss」や「[h]:mm」とする必要があります。hが時、mmが分、ssが秒を意味しています。

    表示形式は、「ホームタブ→数値メニュー」から選択することもできますし、該当セルを右クリックして「セルの書式設定」からでも選択できます。

    本記事のテンプレートでは、各時間の集計部分(I1、K1、I2、K2セル)にこの表示形式を設定しています。

    入力ミスや表記ゆれを検知して、エラーが出る設定にする

    「意図しない入力を防ぎたい」「深夜1:00については25:00ではなく1:00に統一したい」といった場合は、データの入力規則を設定します。

    データの入力規則とは、セルに入力する値に規制を設ける設定のことです。

    手順は以下の通りです。

    1. データタブ→データツールメニューを選択する
    2. 勤怠情報を入力するC4からF34セルを選択し、データの入力規則をクリックする
    3. データの入力規則のダイアログボックスが出てくるので、下の図のように設定する
    図:時刻しか入力できなくするデータ入力規則の設定例
    図:時刻しか入力できなくするデータ入力規則の設定例

    これで、該当セルには0:00から23:59までしか入力できなくなるため、入力ミスや深夜時間の表記ゆれを防ぐことができます。

    オートフィルで関数式を自動入力する

    「同様の関数式を1行目から34行目まで入力したい」といった場合は、オートフィルという機能を使うのがおすすめです。

    選択したセルの右下にカーソルをあわせるとマウスポインタが太字の十字のようになるので、その状態でドラッグするとオートフィルを実行できます。例えば関数式を入力したG4セルからK4セルまでを選択した状態で、34行目までドラッグすることで、簡単に式を自動入力することができます。

    「0:00」が表示されないように設定し、表をすっきりさせる

    勤怠管理表に「0:00」が表示されて見づらいと感じる場合は、以下の設定をすることで、すっきりさせることができます。

    1. 該当セルを選択する
    2. そのまま「ホームタブ→スタイルメニュー→条件付き書式→新しいルール」をクリックする
    3. <liルールの内容を下の図のように設定する
    4. 「書式」をクリックしてフォントの色を背景色と同じ色にする

    この設定を行うことで、「0:00」が背景色と同じ色で表示されるようになります。つまり、休憩時間や労働時間が入力されていないときはセルに何も表示されていないように見えるため、表をすっきりさせることができます。

    勤怠管理表で使用するエクセル関数を紹介

    勤怠管理表を自作する際に、よく使う関数を紹介していきます。

    ただし、正確に理解しようとすると難易度が高いため、基本的には本記事のテンプレートをそのまま使用していただくことがおすすめです。

    IF

    書式

    =IF(論理式,真の場合,偽の場合)

    IF関数はエクセルで頻繁に使用される論理関数の一つで、「条件に合っているとき」と「条件に合っていないとき」で処理を変える関数です。

    IF関数式中にIFを更に入れて、入れ子構造にして使用することもあります。

    IFS※

    書式([]内は省略可能です)

    =IFS(論理式1,1が真の場合,[論理式2,2が真の場合,]...)

    IFS関数は1つ以上の条件が真かチェックして、最初に対応した真の場合の値を表示します。最大127件の条件式を設定することができます。条件式を先頭から見ていくので、条件式の順序がポイントとなります。

    ※Excel2016の買い切りタイプや2016より前のバージョンでは使用不可

    AND

    書式([]内は省略可能です)

    =AND(論理式1,[論理式2,]...)

    AND関数はIFと同じ論理関数と呼ばれる関数です。全ての論理式が真になる場合のみ、真と判定され、それ以外は偽と判定されます。論理式は最大255件まで追加できます。IFと組み合わせて使用するのが一般的です。

    IFERROR

    書式

    =IFERROR(値,エラーの場合の値)

    IFERROR関数も論理関数と呼ばれます。関数式がエラーとなった場合に指定した値を表示します。

    TIME

    書式

    =TIME(時,分,秒)

    TIME関数は時刻を指定することができます。セルの表示形式が標準であった場合には日付形式で表示されます。時刻として0:00:00から23:59:59までを表すことができ、「時」の部分が23より大きい場合は24で除算されます。

    ROUND

    書式

    =ROUND(数値,桁数)

    ROUND関数は、数値を四捨五入して指定された桁数にします。桁数は0で整数に、負の値で小数点より上の桁、正の値で小数点以下を四捨五入します。

    ROUND関数の桁数と結果対応表

    数値行数の列結果

    123.45

    0 123
    123.45 -1 120
    123.45 1 123.5

    勤怠管理表のエクセルテンプレートサイトを紹介

    本記事でも勤怠管理表のテンプレートを掲載しましたが、その他のテンプレートを使ってみたいという方には、以下がおすすめです。

    bizocean|「勤怠」の書式テンプレート

    会員登録が必要となりますが、ビジネスのあらゆる場面で使用できるテンプレートが無料でダウンロードできるサイトです。今回紹介した勤怠管理表のように自動計算できるテンプレートもあるので、ぜひ活用してみてください。

    エクセルに限界を感じたら勤怠管理システム導入の検討を

    ここまでエクセルで勤怠管理表を自作する方法を解説し、テンプレートサイトも紹介しました。ただし、あくまでもこれらの勤怠管理表は簡易的なものなので、合う企業と合わない企業があります。

    エクセルでの勤怠管理が合う企業

    エクセルでの勤怠管理が合わない企業

    • 日勤のみ(夜勤がない)

    • 1日8時間労働、週5日勤務

    • 法定休日が日曜日、もしくは休日労働が発生しない

    • 夜勤がある(出勤時刻が22時以降)

    • 変形労働時間制を採用している

    • 1日7時間労働、週6日勤務

    • 休憩が複数回ある

    右に当てはまる場合は勤怠管理システムを利用して、より正確に集計できる体制を作るのがおすすめです。

    特に下記にあてはまる場合は、早めの導入を検討した方が良いでしょう。

    • 自社の勤務ルールが複雑である(変形労働時間制を採用している・休憩が複数回あるなど)
    • 今後、企業規模が大きくなる見込みがある
    • 既にエクセルの勤怠管理表を利用しているが、担当者しか仕組みを理解していない(その社員がいないと勤怠管理ができなくなってしまう)

    まとめ|エクセルのテンプレートをうまく使って、勤怠管理を行おう

    本記事では勤怠管理をエクセルで行う方法や、勤怠管理表を自作する際に必要な関数式などについて説明してきました。

    基本的にはテンプレートを使用し、日々のタイムカードの記録を入力していく使い方がおすすめです。一から自作したいと考える方も、ぜひ本記事で紹介した関数式などを活用して、勤怠管理表を作ってみてください。

    よくある質問とその回答

    よくあるご質問

    Q1.勤怠管理をエクセルで行う際にはどんな関数が使われますか?

    エクセルの勤怠管理表や出勤簿などでよく使われる関数として、次の6つが挙げられます。

    • IF
    • IFS
    • AND
    • IFERROR
    • TIME
    • ROUND

    これらの関数を入力済みの勤怠管理表を紹介しています。詳細は「関数入力済みのエクセル勤怠管理表」をご覧ください。

    Q2.月間残業時間を30分単位で四捨五入する関数式を教えてください

    月間の合計残業時間は、事務処理の簡素化として30分未満を切り捨て、30分以上を切り上げることが認められています。これを行う関数式は、「=ROUND(SUM(合計する範囲)*24,0)/24」です。セルの表示形式は、ユーザー定義で「[h]:mm」としてください。

    詳しくは「H1周辺:各時間の集計を行う関数式」をご覧ください。

    SNSでシェアする
    B!