# networkdays 指令碼與圖表函數

networkdays 函數會傳回介於 start\_date 和 end\_date 之間 (可包含) 的工作日數 (星期一至星期五)，並考慮到所有選用的列出 holiday。

語法：

networkdays (start\_date, end\_date [, holiday])

傳回的資料類型： 整數

行事曆圖表顯示 networkdays 函數傳回的日期範圍

行事曆圖表顯示 networkdays 函數傳回的日期範圍

行事曆圖表顯示 networkdays 函數傳回的日期範圍 ![在此處新增替代文字.....！](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-networkdays-general-calendar.png)

`networkdays` 函數具有下列限制：

* 沒有方法可修改工作日。換言之，沒有方式可為工作日不是星期一至星期五的相關地區或情境修改函數。

* `holiday` 參數必須是字串常數。不接受運算式。

引數

| 引數 | 描述 |
| --- | --- |
| start\_date | 要評估的開始日期。 |
| end\_date | 要評估的結束日期。 |
| holiday | 要從工作日中排除的假期。假日以字串常數日期表示。您可以指定多個假日日期，以逗點分隔。<br><br>範例： `  '12/25/2013', '12/26/2013', '12/31/2013', '01/01/2014' ` |

## 什麼情況下使用

`networkdays()` 函數通常在使用者想要計算以使用發生在兩個日期之間的工作天數時，作為運算式的一部分使用。例如，若使用者想要計算員工在 PAYE (即收即付) 合約賺取的總薪資。

函數範例

| 範例 | 結果 |
| --- | --- |
| `networkdays ('12/19/2013', '01/07/2014')` | 傳回 14。此範例不會考慮假日。 |
| `networkdays ('12/19/2013', '01/07/2014', '12/25/2013', '12/26/2013')` | 傳回 12。此範例會將假日 12/25/2013 至 12/26/2013 納入考量。 |
| `networkdays ('12/19/2013', '01/07/2014', '12/25/2013', '12/26/2013', '12/31/2013', '01/01/2014')` | 傳回 10。此範例將兩個假日期間納入考量。 |

## 區域設定

除非另有說明，否則此主題中的範例皆使用下列日期格式：MM/DD/YYYY。日期格式是在資料載入指令碼的 `SET DateFormat` 陳述式中指定。由於地區設定和其他因素，您系統中的預設日期格式可能會不同。您可以變更以下範例中的格式，以滿足您的需求。或者，您可以在載入指令碼中變更格式，以符合這些範例。

應用程式中的預設地區設定是根據安裝 Qlik Sense 之電腦或伺服器的地區系統設定。若您存取的 Qlik Sense 伺服器設定為瑞典，資料載入編輯器將會對日期、時間和貨幣使用瑞典文地區設定。這些地區格式設定與 Qlik Sense 使用者介面中顯示的語言無關。Qlik Sense 將會以您正在使用的瀏覽器語言顯示。

## 範例 1 – 基本範例

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/networkdays.htm)

#### 載入指令碼和結果

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 資料集包含專案 ID、開始日期和結束日期。此資訊載入到稱為 `Projects` 的表格。

* 以 `DateFormat` 系統變數 (MM/DD/YYYY) 格式提供的日期欄位。

* 建立附加欄位 `net_work_days`，以計算每個專案涉及的工作天數。

載入指令碼

```
SET DateFormat='MM/DD/YYYY';

Projects:
    Load
        *,
        networkdays(start_date,end_date) as net_work_days
        ;
Load
id,
start_date,
end_date
Inline 
[	
id,start_date,end_date
1,01/01/2022,01/18/2022
2,02/10/2022,02/17/2022
3,05/17/2022,07/05/2022
4,06/01/2022,06/12/2022
5,08/10/2022,08/26/2022
];
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `id`

* `start_date`

* `end_date`

* `net_work_days`

結果表格

| id | start\_date | end\_date | net\_work\_days |
| --- | --- | --- | --- |
| 1 | 01/01/2022 | 01/18/2022 | 12 |
| 2 | 02/10/2022 | 02/17/2022 | 6 |
| 3 | 05/17/2022 | 07/05/2022 | 36 |
| 4 | 06/01/2022 | 06/12/2022 | 8 |
| 5 | 08/10/2022 | 08/26/2022 | 13 |

因為沒有已排程的假期 (這已存在於 `networkdays()` 函數的第三引數)，函數會從 `end_date` 減去 `start_date` 以及所有週末，以計算兩個日期之間的工作天數。

醒目提示專案 5 工作日的行事曆圖表 (無假期)

醒目提示專案 5 工作日的行事曆圖表 (無假期)

醒目提示專案 5 工作日的行事曆圖表 (無假期) ![8 月的行事曆圖表，顯示資料集中 ID 為 5 的專案工作日。在此，會醒目提示從 2022 年 8 月 10 日至 26 日的所有工作日 (星期一-星期五)，並排除星期六和星期日。](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-networkdays-example-basic.png)

以上行事曆以視覺方式概述 `id` 為 5 的專案。專案 5 開始於 2022 年 8 月10 日星期三，並結束於 2022 年 8 月 26 日。在忽略所有星期六和星期日的情況下，之間有 13 個工作日，並包含這兩個日期。

## 範例 2 – 單一假期

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/networkdays.htm)

#### 載入指令碼和結果

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 與上一個範例相同的資料集和情境。

* 以 `DateFormat` 系統變數 (MM/DD/YYYY) 格式提供的日期欄位。

* 建立附加欄位 `net_work_days`，以計算每個專案涉及的工作天數。

在此範例中，有一天排程於 2022 年 8 月19 日的假期。

載入指令碼

```
SET DateFormat='MM/DD/YYYY';

Projects:
    Load
        *,
        networkdays(start_date,end_date,'08/19/2022') as net_work_days
        ;
Load
id,
start_date,
end_date
Inline 
[	
id,start_date,end_date
1,01/01/2022,01/18/2022
2,02/10/2022,02/17/2022
3,05/17/2022,07/05/2022
4,06/01/2022,06/12/2022
5,08/10/2022,08/26/2022
];
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `id`

* `start_date`

* `end_date`

* `net_work_days`

結果表格

| id | start\_date | end\_date | net\_work\_days |
| --- | --- | --- | --- |
| 1 | 01/01/2022 | 01/18/2022 | 12 |
| 2 | 02/10/2022 | 02/17/2022 | 6 |
| 3 | 05/17/2022 | 07/05/2022 | 36 |
| 4 | 06/01/2022 | 06/12/2022 | 8 |
| 5 | 08/10/2022 | 08/26/2022 | 12 |

輸入單一排程假期作為 `networkdays()` 函數中的第三引數。

醒目提示專案 5 工作日的行事曆圖表 (單一假期)

醒目提示專案 5 工作日的行事曆圖表 (單一假期)

醒目提示專案 5 工作日的行事曆圖表 (單一假期) ![8 月的行事曆圖表，顯示資料集中 ID 為 5 的專案工作日。在此，會醒目提示從 2022 年 8 月 10 日至 26 日的所有工作日 (星期一-星期五)，並排除 2022 年 8 月 19 日 (假日)。](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-networkdays-example-single-holiday.png)

以上行事曆以視覺方式概述專案 5，呈現此調整以納入假期。此假期發生在專案 5 期間 2022 年 8 月 19 日星期五。因此，專案 5 的總 `net_work_days` 值減少一天，從 13 天變成 12 天。

## 範例 3 – 多個假期

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/networkdays.htm)

#### 載入指令碼和結果

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 與第一個範例相同的資料集和情境。

* 以 `DateFormat` 系統變數 (MM/DD/YYYY) 格式提供的日期欄位。

* 建立附加欄位 `net_work_days`，以計算每個專案涉及的工作天數。

不過，在此範例中，有四個排程於 2022 年 8 月 18 日至 8 月 21 日的假期。

載入指令碼

```
SET DateFormat='MM/DD/YYYY';

Projects:
    Load
        *,
        networkdays(start_date,end_date,'08/18/2022','08/19/2022','08/20/2022','08/21/2022') as net_work_days
        ;
Load
id,
start_date,
end_date
Inline 
[	
id,start_date,end_date
1,01/01/2022,01/18/2022
2,02/10/2022,02/17/2022
3,05/17/2022,07/05/2022
4,06/01/2022,06/12/2022
5,08/10/2022,08/26/2022
];
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `id`

* `start_date`

* `end_date`

* `net_work_days`

結果表格

| id | start\_date | end\_date | net\_work\_days |
| --- | --- | --- | --- |
| 1 | 01/01/2022 | 01/18/2022 | 12 |
| 2 | 02/10/2022 | 02/17/2022 | 6 |
| 3 | 05/17/2022 | 07/05/2022 | 36 |
| 4 | 06/01/2022 | 06/12/2022 | 8 |
| 5 | 08/10/2022 | 08/26/2022 | 11 |

從 `networkdays()` 函數中的第三引數開始，輸入四個已排程的假期作為以逗號分隔的清單。

醒目提示專案 5 工作日的行事曆圖表 (多個假期)

醒目提示專案 5 工作日的行事曆圖表 (多個假期)

醒目提示專案 5 工作日的行事曆圖表 (多個假期) ![8 月的行事曆圖表，顯示資料集中 ID 為 5 的專案工作日。在此，會醒目提示從 2022 年 8 月 10 日至 26 日的所有工作日 (星期一-星期五)，並排除 2022 年 8 月 18 日和 19 日 (假期)。](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-networkdays-example-multiple-holidays.png)

以上行事曆以視覺方式概述專案 5，呈現此調整以納入這些假期。此排程假期期間發生在專案 5 期間，其中兩天發生在星期四和星期五。因此，專案 5 的總 `net_work_days` 值從 13 天減為 11 天。

## 範例 4 – 單一假期

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/networkdays.htm)

#### 載入指令碼和圖表運算式

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 與第一個範例相同的資料集和情境。

* 以 DateFormat 系統變數 (MM/DD/YYYY) 格式提供的日期欄位。

有一天排程於 2022 年 8 月19 日的假期。

不過，在此範例中，不變的資料集會載入到應用程式中。會計算 net\_work\_days 欄位作為圖表物件中的量值。

載入指令碼

```
SET DateFormat='MM/DD/YYYY';

Projects:
Load
id,
start_date,
end_date
Inline 
[	
id,start_date,end_date
1,01/01/2022,01/18/2022
2,02/10/2022,02/17/2022
3,05/17/2022,07/05/2022
4,06/01/2022,06/12/2022
5,08/10/2022,08/26/2022
];
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* id

* start\_date

* end\_date

建立下列量值：

= networkdays(start\_date,end\_date,’08/19/2022’)

結果表格

| id | start\_date | end\_date | net\_work\_days |
| --- | --- | --- | --- |
| 1 | 01/01/2022 | 01/18/2022 | 12 |
| 2 | 02/10/2022 | 02/17/2022 | 6 |
| 3 | 05/17/2022 | 07/05/2022 | 36 |
| 4 | 06/01/2022 | 06/12/2022 | 8 |
| 5 | 08/10/2022 | 08/26/2022 | 12 |

輸入單一排程假期作為 networkdays() 函數中的第三引數。

行事曆圖表顯示網路工作日並具有單一假期 (圖表物件)

行事曆圖表顯示網路工作日並具有單一假期 (圖表物件)

行事曆圖表顯示網路工作日並具有單一假期 (圖表物件) ![8 月的行事曆圖表，顯示資料集中 ID 為 5 的專案工作日。在此，會醒目提示從 2022 年 8 月 10 日至 26 日的所有工作日 (星期一-星期五)，並排除 2022 年 8 月 19 日 (假日)。](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-networkdays-example-chart-single-holiday.png)

以上行事曆以視覺方式概述專案 5，呈現此調整以納入假期。此假期發生在專案 5 期間 2022 年 8 月 19 日星期五。因此，專案 5 的總 net\_work\_days 值減少一天，從 13 天變成 12 天。