深夜残業時間を計算したい

記事番号:040797

kintoneでは、勤怠を入力するアプリで計算式を使って、勤務日ごとに深夜残業時間(22時から翌日5時まで)が何時間あるかを算出できます。

設定例

ここでは、1レコードに1か月分の勤怠を入力するアプリを例に説明します。

準備

勤怠を入力するアプリを準備してください。
1レコードに1か月分の勤怠を入力するアプリを作成するには、テーブルに勤務日ごとに入力してほしいフィールドを配置します。

深夜残業時間を算出するために、以下の3つのフィールドを含めてください。

  • (1) 時刻フィールド:出勤時刻を入力するフィールド
  • (2) 時刻フィールド:退勤時刻を入力するフィールド
  • (3) 計算フィールド:深夜残業時間を算出するフィールド

フィールドの配置例

各フィールドの設定

  • (1) 時刻フィールド
    このフィールドは、出勤時刻を入力するために使用します。

    • フィールド名:出勤
    • フィールドコード:出勤

  • (2) 時刻フィールド
    このフィールドは、退勤時刻を入力するために使用します。

    • フィールド名:退勤
    • フィールドコード:退勤

  • (3) 計算フィールド
    このフィールドでは、(1)(2)で入力された勤務時間のうち、深夜残業時間が何時間あるかを算出します。

    • フィールド名:深夜残業時間
    • フィールドコード:深夜残業時間
    • 計算式:以下の計算式を設定します。
      参考:計算式の解説
    IF(出勤=退勤,7*60*60,
      IF(AND(出勤<=5*60*60, 出勤<=退勤, 退勤<=5*60*60),退勤-出勤,
        IF(AND(出勤<=5*60*60, 退勤>=5*60*60, 退勤<=22*60*60),5*60*60-出勤,
          IF(AND(出勤<=5*60*60, 退勤>=22*60*60),(5*60*60-出勤)+(退勤-22*60*60),
            IF(AND(出勤<=5*60*60, 退勤<=出勤),(5*60*60-出勤)+(2*60*60)+退勤,
              IF(AND(出勤<=22*60*60, 退勤>=22*60*60),退勤-22*60*60,
                IF(AND(出勤<=22*60*60, 退勤<=5*60*60),2*60*60+退勤,
                  IF(AND(出勤<=22*60*60, 退勤>=5*60*60, 退勤<出勤),7*60*60,
                    IF(AND(出勤>=22*60*60, 退勤>=出勤),退勤-出勤,
                      IF(AND(出勤>=22*60*60, 退勤<=出勤, 退勤>=22*60*60),(24*60*60-出勤)+5*60*60+(退勤-22*60*60),
                        IF(AND(出勤>=22*60*60, 退勤<=5*60*60),(24*60*60-出勤)+退勤,
                          IF(AND(出勤>=22*60*60, 退勤>=5*60*60, 退勤<=22*60*60),(24*60*60-出勤)+5*60*60,0
                          )
                        )
                      )
                    )
                  )
                )
              )
            )
          )
        )
      )
    )

    • 表示形式:「時間(例:26時間3分)」を選択

計算式の解説

この計算式では、IF関数を使用して、出勤時刻と退勤時刻の入力パターンごとに条件分岐するように記述しています。
これにより、様々な出勤時刻や退勤時刻を入力しても、勤務日ごとに深夜残業時間を算出できます。

この計算式で記載されている条件分岐

(1) 出勤時刻と退勤時刻が同じ場合(24時間勤務)

  • 条件式:出勤=退勤
  • 計算式:7*60*60

(2) 出勤時刻:0時~5時、退勤時刻:出勤時刻以降~5時の場合

  • 条件式:AND(出勤<=5*60*60, 出勤<=退勤, 退勤<=5*60*60)
  • 計算式:退勤-出勤

(3) 出勤時刻:0時~5時、退勤時刻:5時~22時の場合

  • 条件式:AND(出勤<=5*60*60, 退勤>=5*60*60, 退勤<=22*60*60)
  • 計算式:5*60*60-出勤

(4) 出勤時刻:0時~5時、退勤時刻:22時~翌日0時の場合

  • 条件式:AND(出勤<=5*60*60, 退勤>=22*60*60)
  • 計算式:(5*60*60-出勤)+(退勤-22*60*60)

(5) 出勤時刻:0時~5時、退勤時刻:翌日の0時~出勤時刻以前の場合

  • 条件式:AND(出勤<=5*60*60, 退勤<=出勤)
  • 計算式:(5*60*60-出勤)+(2*60*60)+退勤

(6) 出勤時刻:5時~22時、退勤時刻:22時~翌日0時の場合

  • 条件式:AND(出勤<=22*60*60, 退勤>=22*60*60)
  • 計算式:退勤-22*60*60

(7) 出勤時刻:5時~22時、退勤時刻:翌日の0時~5時の場合

  • 条件式:AND(出勤<=22*60*60, 退勤<=5*60*60)
  • 計算式:2*60*60+退勤

(8) 出勤時刻:5時~22時、退勤時刻:翌日の5時~出勤時刻以前の場合

  • 条件式:AND(出勤<=22*60*60, 退勤>=5*60*60, 退勤<出勤)
  • 計算式:7*60*60

(9) 出勤時刻:22時~0時、退勤時刻:出勤時刻以降の22時~0時の場合

  • 条件式:AND(出勤>=22*60*60, 退勤>=出勤)
  • 計算式:退勤-出勤

(10) 出勤時刻:22時~0時、退勤時刻:翌日の22時~0時かつ出勤時刻以前の場合

  • 条件式:AND(出勤>=22*60*60, 退勤<=出勤, 退勤>=22*60*60)
  • 計算式:(24*60*60-出勤)+5*60*60+(退勤-22*60*60)

(11) 出勤時刻:22時~0時、退勤時刻:翌日の0時~5時の場合

  • 条件式:AND(出勤>=22*60*60, 退勤<=5*60*60)
  • 計算式:(24*60*60-出勤)+退勤

(12) 出勤時刻:22時~0時、退勤時刻:翌日の5時~22時の場合

  • 条件式:AND(出勤>=22*60*60, 退勤>=5*60*60, 退勤<=22*60*60)
  • 計算式:(24*60*60-出勤)+5*60*60

アプリテンプレート

この計算式が設定されたアプリのテンプレートを、以下よりダウンロードできます。

アプリテンプレート「latenight_overtime.zip」(日本語のみ)

リンクをクリックしてテンプレートファイル(zip)をダウンロードしたあと、解凍せずにkintoneで読み込んでください。