# lastworkdate スクリプトおよびチャート関数

lastworkdate 関数は、オプションで指定された holiday を考慮した上で、start\_date に開始した場合に no\_of\_workdays (月～金曜日) の日数に達する最早終了日を返します。start\_date と holiday は、有効な日付またはタイムスタンプでなければなりません。

構文:

lastworkdate(start\_date, no\_of\_workdays {, holiday})

戻り値データ型： 整数

`lastworkdate()` 関数の使用方法を示すカレンダー

`lastworkdate()` 関数の使用方法を示すカレンダー

`lastworkdate()`lastworkdate() 関数の使用方法を示すカレンダー ![月のカレンダーを示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lastworkdate-diagram1.png)

制限事項

開始日が月曜日で終了日が金曜日の業務週以外に関与する地域やシナリオに対して `lastworkdate()` 関数を変更す方法はありません。

休日パラメータは文字列定数である必要があります。数式は使用できません。

lastworkdate の使用目的

`lastworkdate()` 関数は、ユーザーが、プロジェクトが開始する日時とその期間発生する休日に基づいて、プロジェクトまたは課題に要請された終了日を計算するための数式の一部としてよく使用されます。

## リージョンの設定

特に指定のない限り、このトピックの例では MM/DD/YYYY の日付書式を使用しています。 日付書式は、データ ロード スクリプトの `SET DateFormat` ステートメントで指定されています。既定の日付書式は、リージョンの設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。詳しくは「[アプリケーションとスクリプトの地域設定の変更](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm)」を参照してください。

アプリケーションの既定のリージョン設定は、ユーザー プロファイルに基づいています。これらのリージョンの書式設定は、Qlik Cloud ユーザー インターフェースに表示される言語とは関係ありません。Qlik Cloud は使用しているブラウザと同じ言語で表示されます。

アプリケーションの作成者は、作成するアプリケーションの既定のリージョンを設定できます。詳細については、「[Qlik Cloud Analytics でアプリとスクリプトを作成するための優先地域設定の設定](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting)」を参照してください。

引数

| 引数 | 説明 |
| --- | --- |
| start\_date | 評価する開始日。 |
| no\_of\_workdays | 作成する作業日数。 |
| holiday | 作業日から除外する休日期間。休日は文字列定数の日付として示されます。コンマで区切り、複数の休日を設定できます。<br><br>`  '12/25/2013', '12/26/2013', '12/31/2013', '01/01/2014' ` |

## 例 1 – 基本的な例

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

#### ロード スクリプトと結果

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* プロジェクト ID、プロジェクト開始日、およびプロジェクトに必要な推定工数、日数を含むデータセット。「`Projects`」というテーブルにロードされるデータセット。

* 項目 [`end_date`] として設定され、各プロジェクトが終了するスケジュールを特定する `lastworkdate()` 関数を含む、先行する LOAD。

ロード スクリプト

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

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

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `id`
* `start_date`
* `effort`
* `end_date`

結果テーブル

| ID | start\_date | 推定工数 | end\_date |
| --- | --- | --- | --- |
| 1 | 01/01/2022 | 14 | 01/20/2022 |
| 2 | 02/10/2022 | 17 | 03/04/2022 |
| 3 | 05/17/2022 | 5 | 05/23/2022 |
| 4 | 06/01/2022 | 12 | 06/16/2022 |
| 5 | 08/10/2022 | 26 | 09/14/2022 |

スケジュールされた休日がないため、関数は定義された業務日数 (月～金) を開始日に加えて、最も早い終了日を算出します。

次のカレンダーには、プロジェクト 3 の開始と終了日が表示されています (業務日は緑色でハイライトされている)。

プロジェクト 3 の開始と終了日を示すカレンダー

プロジェクト 3 の開始と終了日を示すカレンダー

プロジェクト 3 の開始と終了日を示すカレンダー ![プロジェクトの開始日が 5 月 17 日、業務日の最終日が 5 月 23 日で、合計 5 日の業務日を示している図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lastworkdate-example1-diagram.png)

## 例 2 - 単一の休日

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

#### ロード スクリプトと結果

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* プロジェクト ID、プロジェクト開始日、およびプロジェクトに必要な推定工数、日数を含むデータセット。「`Projects`」というテーブルにロードされるデータセット。

* 項目 [`end_date`] として設定され、各プロジェクトが終了するスケジュールを特定する `lastworkdate()` 関数を含む先行ロード。

ただし、2022 年 5 月 18 日に休日が 1 日スケジュールされています。先行する LOAD の `lastworkdate()` 関数には、各プロジェクトが終了する予定の日時を特定する第 3引数に休日が含まれます。

ロード スクリプト

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

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

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `id`
* `start_date`
* `effort`
* `end_date`

結果テーブル

| ID | start\_date | 推定工数 | end\_date |
| --- | --- | --- | --- |
| 1 | 01/01/2022 | 14 | 01/20/2022 |
| 2 | 02/10/2022 | 17 | 03/04/2022 |
| 3 | 05/17/2022 | 5 | 05/24/2022 |
| 4 | 06/01/2022 | 12 | 06/16/2022 |
| 5 | 08/10/2022 | 26 | 09/14/2022 |

単一のスケジュールされた休日は、`lastworkdate()` 関数に第 3 引数として入力されます。結果として、休日が終了日までの業務日の 1 日に当たるため、プロジェクト 3 の終了日は 1 日後にずれます。

次のカレンダーは、プロジェクト 3 の開始/終了日と、休日によりプロジェクトの終了日が 1 日変更されることを示しています。

プロジェクト 3 の開始と終了日、休日が 5 月 18 日であることを示すカレンダー

プロジェクト 3 の開始と終了日、休日が 5 月 18 日であることを示すカレンダー

プロジェクト 3 の開始と終了日、休日が 5 月 18 日であることを示すカレンダー ![プロジェクト 3 の開始日が 5 月 17 日、休日が 5 月 18 日であることを示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lastworkdate-example2-diagram.png)

## 例 3 - 複数の休日

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

#### ロード スクリプトと結果

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* プロジェクト ID、プロジェクト開始日、およびプロジェクトに必要な推定工数、日数を含むデータセット。「`Projects`」というテーブルにロードされるデータセット。

* 項目 [`end_date`] として設定され、各プロジェクトが終了するスケジュールを特定する `lastworkdate()` 関数を含む先行ロード。

ただし、5 月 19 日、20 日、21 日、および 22 日に対して 3 日の休日がスケジュールされています。先行する LOAD の `lastworkdate()` 関数には、各プロジェクトが終了する予定の日時を特定する第 3引数に休日が含まれます。

ロード スクリプト

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

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

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `id`
* `start_date`
* `effort`
* `end_date`

結果テーブル

| ID | start\_date | 推定工数 | end\_date |
| --- | --- | --- | --- |
| 1 | 01/01/2022 | 14 | 01/20/2022 |
| 2 | 02/10/2022 | 17 | 03/04/2022 |
| 3 | 05/17/2022 | 5 | 05/25/2022 |
| 4 | 06/01/2022 | 12 | 06/16/2022 |
| 5 | 08/10/2022 | 26 | 09/14/2022 |

4 日の休日は、開始日後の `lastworkdate()` 関数の引数と業務日数のリストとして入力されます。

次のカレンダーは、プロジェクト 3 の開始/終了日と、休日によりプロジェクトの終了日が 3 日変更されることを示しています。

プロジェクト 3 の開始と終了日、休日が 5 月 19～22 日であることを示すカレンダー

プロジェクト 3 の開始と終了日、休日が 5 月 19～22 日であることを示すカレンダー

プロジェクト 3 の開始と終了日、休日が 5 月 19～22 日であることを示すカレンダー ![プロジェクト 3 の開始日を 5 月 17 日、業務終了日を 5 月 25 日としていますが、4 日間の臨時休日があるため、最終業務日が 3  日 (うち 2 日は土日) 後ろにずれることを示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lastworkdate-example3-diagram.png)

## 例 4 - 単一の休日 (チャート)

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

#### ロード スクリプトとチャートの数式

概要

最初の例と同じデータセットとシナリオが使用されます。

ただし、この例では、データセットは変更されず、アプリケーションにロードされます。[`end_date`] 項目は、チャートのメジャーとして計算されます。

ロード スクリプト

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

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

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `id`
* `start_date`
* `effort`

end\_date を計算するには、次のメジャーを作成します:

* `=LastWorkDate(start_date,effort,'05/18/2022')`

結果テーブル

| ID | start\_date | 推定工数 | =LastWorkDate(start\_date,effort,'05/18/2022') |
| --- | --- | --- | --- |
| 1 | 01/01/2022 | 14 | 01/20/2022 |
| 2 | 02/10/2022 | 17 | 03/04/2022 |
| 3 | 05/17/2022 | 5 | 05/23/2022 |
| 4 | 06/01/2022 | 12 | 06/16/2022 |
| 5 | 08/10/2022 | 26 | 09/14/2022 |

単一のスケジュールされた休日は、チャートのメジャーとして入力されます。結果として、休日が終了日までの業務日の 1 日に当たるため、プロジェクト 3 の終了日は 1 日後にずれます。

次のカレンダーは、プロジェクト 3 の開始/終了日と、休日によりプロジェクトの終了日が 1 日変更されることを示しています。

プロジェクト 3 の開始と終了日、休日が 5 月 18 日であることを示すカレンダー

プロジェクト 3 の開始と終了日、休日が 5 月 18 日であることを示すカレンダー

プロジェクト 3 の開始と終了日、休日が 5 月 18 日であることを示すカレンダー ![プロジェクト 3 の開始日が 5 月 17 日、休日が 5 月 18 日であることを示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-lastworkdate-example2-diagram.png)