# 2026 年 6 月員工出勤工時計算問題

## 問題描述

請根據 2026 年 6 月的員工出勤明細，計算每位員工當月的「工作天數」與「工作總時數」。

計算時需要套用以下條件：

- 六日不算入工作天數，也不計入工作總時數。
- 加班時數最多只算到晚上 19:30。
- 員工名字與編號需要以馬賽克方式處理。
- 扣除上述條件後，彙整出每位員工的工作天數與工作總時數。

## 原始資料

資料檔案：

`2026.06月份.xlsx`

工作簿中主要有兩張工作表：

| 工作表             | 說明                       |
| ------------------ | -------------------------- |
| `算工作數`       | 放置要完成的計算題目與欄位 |
| `員工出勤明細表` | 放置員工每日出勤紀錄       |

## 出勤資料結構

`員工出勤明細表` 以員工為區段排列。每位員工區段開頭會標示員工代號與姓名，後面列出該員工在 2026 年 6 月的每日出勤資料。

主要欄位如下：

| 欄位     | 說明                                   |
| -------- | -------------------------------------- |
| 日期     | 出勤日期                               |
| 星期     | 星期幾，例如一、二、三、四、五、六、日 |
| 班次代號 | 出勤班別代號                           |
| 班次名稱 | 出勤班別名稱                           |
| 上班     | 上班時間，可能含有文字註記             |
| 下班     | 下班時間，可能含有文字註記             |
| 備註     | 其他說明                               |

## 時間欄位處理

上班與下班欄位不一定只有單純時間，可能會包含文字註記。計算時要抓出欄位最後出現的時間。

範例：

| 原始內容        | 計算用時間 |
| --------------- | ---------- |
| `07:53`       | `07:53`  |
| `遲到08:25`   | `08:25`  |
| `早退15:39`   | `15:39`  |
| `病假12:23`   | `12:23`  |
| `特休假09:21` | `09:21`  |

如果上班或下班欄位為空白，該筆紀錄不計入工作時數。

## 工作天數規則

1. 星期六與星期日不計入。
2. 平日有有效上班與下班時間，才可計入工作天。
3. 同一位員工同一天只計 1 個工作天。
4. 同一天如果有多筆出勤紀錄，不能重複計算工作天數。

## 工作總時數規則

每筆有效出勤紀錄的工作時數計算方式：

`工作時數 = 計算後下班時間 - 上班時間`

下班時間需先套用上限：

| 實際下班時間 | 計算用下班時間 |
| ------------ | -------------- |
| 17:08        | 17:08          |
| 19:30        | 19:30          |
| 19:41        | 19:30          |
| 20:36        | 19:30          |

同一位員工同一天若有多筆有效出勤紀錄：

- 工作天數仍只算 1 天。
- 工作總時數可以依有效出勤區段加總。

## 需要完成的結果

請在 `算工作數` 或新增的彙總區中完成以下欄位：

| 欄位       | 說明                               |
| ---------- | ---------------------------------- |
| 每月       | 統計月份                           |
| 工作天數   | 每位員工該月符合條件的工作天數     |
| 工作總時數 | 每位員工該月符合條件的工作時數合計 |

建議另外建立逐筆計算明細，方便檢查：

| 欄位     | 說明                         |
| -------- | ---------------------------- |
| 員工     | 員工代號與姓名               |
| 日期     | 出勤日期                     |
| 星期     | 星期幾                       |
| 上班原始 | 原始上班欄位                 |
| 下班原始 | 原始下班欄位                 |
| 上班時間 | 解析後的上班時間             |
| 下班時間 | 解析後的下班時間             |
| 計算下班 | 套用 19:30 上限後的下班時間  |
| 工作時數 | 該筆紀錄計入的工時           |
| 每日計數 | 同一員工同一天只計一次工作天 |

## 驗收條件

完成後應確認：

- 六日資料沒有計入工作天數。
- 六日資料沒有計入工作總時數。
- 晚於 19:30 的下班時間都只算到 19:30。
- 早於 19:30 的下班時間使用實際下班時間。
- 含有文字註記的上班、下班欄位仍能正確抓出時間。
- 同一員工同一天多筆紀錄不會重複增加工作天數。
- 同一員工同一天多筆有效紀錄的工作時數可以加總。
- 原始出勤明細不可被刪除或覆蓋。
- 員工名字與編號在成果或檢查資料中已完成馬賽克處理。
