請假時數計算問題

更新於 發佈於 閱讀時間約 6 分鐘

接下來想要分享在工作場合遇到的一個問題,這次我試著用不同的函式組合,計算請假時數。一起來看看怎麼做!



問題定義

我們要設計一個算出員工請假時數的方法。

員工會提供要請假的起始日期、時間,還有請假的終止日期、時間:

raw-image

員工會這樣填入表格:

raw-image

我們要設法算出綠色那邊的請假時數。




上班時間的規定是這樣的:

  • 上班時間是 9 點到 18 點。
  • 週六、週日不上班。
  • 國定假日依政府的行政機關辦公日曆而定,遇國定假日不上班、有補班日也不上班。
  • 12 點到 13 點是午休時間。
  • 一天的總工作時數應是 8 小時。

這邊附上行政機關辦公日曆給你參考:

好,怎麼算呢?在這邊分享我的想法,歡迎跟我交流!




先製作國定假日的表

首先要先把日曆轉成表格,讓等等的函式可以讀取國定假日。這邊沒有什麼技巧,就只是謄打上去過後,確保日期是正確格式即可。

raw-image


計算起始日至終止日之間有哪些日

之後我起了一張新的工作表:

raw-image


這邊把起始日期、起始時間、結束日期、結束時間簡單用相對參照,把資料帶過來。

raw-image

(這邊以 2024 的 6 月 6 日到 21 日為範例)


我想知道起始日期到終止日期之間,有哪些日子是國定假日、哪些是週末(六、日),所以準備了這樣的表:

raw-image


在「展開日期」欄,列出起始日期到結束日期之間的日期:

=SEQUENCE(DAYS(C5, C2) + 1, 1, C2, 1)
raw-image


接下來判斷左邊的日期有哪些是週末、哪些是國定假日、哪些是平日。

=ArrayFormula(IF(B10:B <> "", IFNA(
IFS(WEEKDAY(B10:B, 2) >= 6, "週末",
ISNUMBER(MATCH(date, '2024 台灣假期'!B:B, 0)), "國定假日"), "平日"), ""))
raw-image

因為我們只會算平日(工作日)的工作時數,所以如果該日期是週末或國定假日,我們就不會計算休假時數了。


找第一天、最後一天

接著,我在右邊起了一個新的表格,用 QUERY 取得平日的日期。

=QUERY(B9:C, "SELECT B WHERE C = '平日' LABEL B '工作日'")
raw-image


如果要計算時數的話,我想到要先把第一天、中間的天數和最後一天拆開計算,這麼一來:

  • 第一天的請假時間即是起始時間~18:00
  • 中間的請假時間即是 09:00~18:00
  • 最後一天的請假時間即是 09:00~終止時間

所以,拿這次的例子來看:

  • 第一天是 6 月 6 日的 14:00~18:00。
  • 中間是 6 月 7 日到 20 日的 09:00~18:00。
  • 最後一天則是是 6 月 21 日的 09:00~12:00。


為了達成這個,首先要找到工作日的第一天和最後一天。我繼續往右邊新增欄位:

raw-image


經過 QUERY 篩選過後的第一個日期絕對是第一天,所以我這邊就寫了簡單的 IF 來標示:

=IF(E10 <> "", TRUE, "")
raw-image


再來是找最後一天的工作日,我們用 OFFSET 來找。如果 OFFSET 下一列是空白的話,那那一列就會是最後一天了。

=ArrayFormula(IF(E10:E <> "", IF(OFFSET(E10:E, 1, 0) <> "", "", TRUE), ""))
raw-image


再來新增兩欄,我們要用剛剛提到的拆開計算的邏輯,用來計算該日的開始時間與結束時間:

raw-image


找開始時間、結束時間

首先算開始時間。「第一天」那欄是 TRUE 的話,代表該列是第一天,那麼就以員工申請請假的起始時間起計,否則就回傳一天的上班時間,也就是 9 點。

=ArrayFormula(IF(E10:E <> "", IF(F10:F = TRUE, C3, TIMEVALUE("09:00")), ""))
raw-image


這邊開始時間是以小數點顯示。這邊如果看不習慣的話,可以更改格式讓開始時間換成以時與分顯示:

raw-image


再來是結束時間。「最後一天」那欄是 TRUE 的話,代表該列是最後一天,那麼就以員工申請請假的終止時間起計,否則就回傳一天的上班時間,也就是 18 點。

=ArrayFormula(IF(E10:E <> "", IF(G10:G = TRUE, C6, "18:00"), ""))


午休時間有無

還差一點點。我們要計算每列的開始時間與結束時間內,是否有跨到午休時間,如果有的話,就扣除。我這邊做了一個新欄,算出跨到午休時間有多少。

=MAP(H10:H, I10:I, LAMBDA(startTime, endTime,
IF(startTime <> "",
IF(AND(endTime >= TIMEVALUE("12:00"), startTime <= TIMEVALUE("13:00")),
(MIN(endTime, TIMEVALUE("13:00")) - MAX(startTime, "12:00")) * 24, 0),
"")))
raw-image


計算休假時數

再來就可以算每日的休假時數了。這邊多加一欄「休假時數」:

=ArrayFormula(IF(E10:E <> "", (I10:I - H10:H) * 24 - J10:J, ""))
raw-image


最後就是把這欄簡單用 SUM 加總起來,就可以得到答案了。

=SUM(K10:K)




這是我想到的方法,不過或許還有更簡單的計算方式!

回顧一下這邊的步驟有:

  • 先準備國定假日的表
  • 計算起始日到終止日共有哪些日子,把國定假日和週末篩選掉
  • 把日期拆成第一天的、最後一天的、中間經過日,再分別計算每天的起始日與終止日
  • 考量午休時間的狀況,若有,需要扣除
  • 最後加總,即是答案

我把我的過程放在這個試算表,歡迎來參考!




如果你喜歡這次的文章,歡迎你透過這些方法支持我:

  • 按下愛心、按下儲存
  • 留言告訴我你的想法
  • 加入喜特先生的官方沙龍,即時看到我發布的教學
  • 付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
  • 追蹤喜特先生的 Facebook
  • 這邊小額贊助我的創作!

想要看更多文章的話,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!

我是喜特先生,Mr. Sheet,我們下個教學見!



留言
avatar-img
留言分享你的想法!
程騰榮-avatar-img
2024/06/20
只要 一格公式就行:=NETWORKDAYS(C2,C5,台灣假期)*8-(C3-"9:00"-IF(C3>=--"13:00","1:00")+"18:00"-C6-IF(C6<=--"12:00","1:00"))*24
喜特先生 Mr. Sheet -avatar-img
發文者
2024/06/20
程騰榮 高手!👌這個方法我比較喜歡
avatar-img
喜特先生官方沙龍
18.8K會員
153內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
2024/02/17
「一比鴨鴨」歌詞裡面,「一」出現了幾次、「比」出現了幾次、「鴨」又出現了幾次呢?我用 Google 試算表算給你看!
Thumbnail
2024/02/17
「一比鴨鴨」歌詞裡面,「一」出現了幾次、「比」出現了幾次、「鴨」又出現了幾次呢?我用 Google 試算表算給你看!
Thumbnail
2023/10/15
怎麼用排序功能與 RANK 函式做出奪牌的排名?在這邊我分享一些我的見解,歡迎來看看!
Thumbnail
2023/10/15
怎麼用排序功能與 RANK 函式做出奪牌的排名?在這邊我分享一些我的見解,歡迎來看看!
Thumbnail
2023/07/07
兩層式下拉式選單怎麼做?或許比你想像中來得簡單唷!一起來看看~
Thumbnail
2023/07/07
兩層式下拉式選單怎麼做?或許比你想像中來得簡單唷!一起來看看~
Thumbnail
看更多
你可能也想看
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
起因: 我在某公司服務數年,平日常常打卡後繼續加班,假日常常要帶東西回家做,不曾領到加班費。 其實我離職也好一段時間了,近半年來衡量利弊得失以及法律諮詢後,我決定討這筆錢。 實務準備(for 勞資調解): 1.加班時間表:用EXCEL記錄每一天的實際下班時間,加班時間,要討的加班費,記住,是每
Thumbnail
起因: 我在某公司服務數年,平日常常打卡後繼續加班,假日常常要帶東西回家做,不曾領到加班費。 其實我離職也好一段時間了,近半年來衡量利弊得失以及法律諮詢後,我決定討這筆錢。 實務準備(for 勞資調解): 1.加班時間表:用EXCEL記錄每一天的實際下班時間,加班時間,要討的加班費,記住,是每
Thumbnail
如果遇到工作時間一到就下班,卻被其他同事酸言酸語、被老闆冷眼相待的經驗,不要因此被迫改變自己的生活觀念。文章內容闡述了公司無故扣員工薪水、開除員工的情況,並詳細解釋了相關的勞動法規定,提供了針對這類情況的應對建議。
Thumbnail
如果遇到工作時間一到就下班,卻被其他同事酸言酸語、被老闆冷眼相待的經驗,不要因此被迫改變自己的生活觀念。文章內容闡述了公司無故扣員工薪水、開除員工的情況,並詳細解釋了相關的勞動法規定,提供了針對這類情況的應對建議。
Thumbnail
勞工請假規則第10條: 「勞工因法令規定應給予公假者,工資照給,其假期視實際需要定之。」 勞工因勞資爭議,告雇主了要給公假? 不是的。 前行政院勞工委員會85年01月13日(85)台勞動二字第100419號函: 「有關勞工與雇主因勞資爭議事件出席主管機關加開之協調或調解會議或經法院之傳喚
Thumbnail
勞工請假規則第10條: 「勞工因法令規定應給予公假者,工資照給,其假期視實際需要定之。」 勞工因勞資爭議,告雇主了要給公假? 不是的。 前行政院勞工委員會85年01月13日(85)台勞動二字第100419號函: 「有關勞工與雇主因勞資爭議事件出席主管機關加開之協調或調解會議或經法院之傳喚
Thumbnail
我們要設計一個算出員工請假時數的方法。員工會提供要請假的起始日期、時間,還有請假的終止日期、時間,要設法算出綠色那邊的請假時數。怎麼算呢?一起來看看!
Thumbnail
我們要設計一個算出員工請假時數的方法。員工會提供要請假的起始日期、時間,還有請假的終止日期、時間,要設法算出綠色那邊的請假時數。怎麼算呢?一起來看看!
Thumbnail
本文探討了勞工請假的合法流程,以及相關的法律規範和限制。針對員工請假時常有的疑問和情況,提供了相應的建議和解決方法,同時也介紹了僱主可以依法解僱不適任員工的相關事宜。
Thumbnail
本文探討了勞工請假的合法流程,以及相關的法律規範和限制。針對員工請假時常有的疑問和情況,提供了相應的建議和解決方法,同時也介紹了僱主可以依法解僱不適任員工的相關事宜。
Thumbnail
某家烘焙業者因員工每週出勤達6日未給付加班費而被勞動檢查裁罰。勞動基準法對休息日的定義和加班費的計算有明確規定,並可對未付加班費提出訴訟。最高法院曾判明,即使提前安排補休,僱主仍應依法發給休息日加班費。
Thumbnail
某家烘焙業者因員工每週出勤達6日未給付加班費而被勞動檢查裁罰。勞動基準法對休息日的定義和加班費的計算有明確規定,並可對未付加班費提出訴訟。最高法院曾判明,即使提前安排補休,僱主仍應依法發給休息日加班費。
Thumbnail
最近剛好碰到一個案例,僱主與員工約定10月10日國定假日調移至11月5日,結果員工做到10月31日就離職了,僱主是否須要返還員工國定假日呢?勞動部對此事的解釋引發了爭議,文章分析了勞基法的相關規定以及國定假日的意義。
Thumbnail
最近剛好碰到一個案例,僱主與員工約定10月10日國定假日調移至11月5日,結果員工做到10月31日就離職了,僱主是否須要返還員工國定假日呢?勞動部對此事的解釋引發了爭議,文章分析了勞基法的相關規定以及國定假日的意義。
Thumbnail
個案 公司資遣工作未滿一年勞工,於113年3月5日依法預告,同年3月15日為離職日,謀職假應該是幾天呢? 有關謀職假相關規定,可參以下二個解釋令。 《前行政院勞工委員會95年10月17日勞資 2字第 0950105136 號令》 核釋勞動基準法第十六條第二項規定:「勞工於接到前項預告後,為
Thumbnail
個案 公司資遣工作未滿一年勞工,於113年3月5日依法預告,同年3月15日為離職日,謀職假應該是幾天呢? 有關謀職假相關規定,可參以下二個解釋令。 《前行政院勞工委員會95年10月17日勞資 2字第 0950105136 號令》 核釋勞動基準法第十六條第二項規定:「勞工於接到前項預告後,為
Thumbnail
不久換我同事的電話響起,聽著對話內容就知道是人資,同事反問對方:「你覺得我每天都快 9 點下班,會是在等親友嗎?」「你知道我主管都 6 點才會回到座位嗎?」「你知道應該不是只有我有這個問題吧?」
Thumbnail
不久換我同事的電話響起,聽著對話內容就知道是人資,同事反問對方:「你覺得我每天都快 9 點下班,會是在等親友嗎?」「你知道我主管都 6 點才會回到座位嗎?」「你知道應該不是只有我有這個問題吧?」
Thumbnail
新年快樂,大家。  開工已經幾天了,但我依然選擇放特休,讓自己好好放鬆一下。  把時間拉回到最後一天上班日,那天的心情有些許起伏。 我們公司和其他公司有所不同,年終獎金都在最後一天才發,再加上那天我們只要打掃完後就可以下班回家,對於我們而言也算是一種福利。   今年公司並沒有辦尾牙,大家心
Thumbnail
新年快樂,大家。  開工已經幾天了,但我依然選擇放特休,讓自己好好放鬆一下。  把時間拉回到最後一天上班日,那天的心情有些許起伏。 我們公司和其他公司有所不同,年終獎金都在最後一天才發,再加上那天我們只要打掃完後就可以下班回家,對於我們而言也算是一種福利。   今年公司並沒有辦尾牙,大家心
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News