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

この関数は、date を含む暦週の初日の最初のミリ秒のタイムスタンプに対応する値を返します。デフォルトの出力形式は、スクリプトに設定されている DateFormat です。

構文:

WeekStart(timestamp [, period\_no [, first\_week\_day ]])

戻り値データ型： デュアル

`weekstart()` 関数は、日付がどの週に該当するかを判断します。次に、その年の最初のミリ秒のタイムスタンプを日付形式で返します。週の最初の曜日は、 `FirstWeekDay` 環境変数によって決定されます。ただし、`weekstart()` 関数ではこれより `first_week_day` 引数が優先されます。

引数

| 引数 | 説明 |
| --- | --- |
| timestamp | 評価する日付またはタイムスタンプ。 |
| period\_no | shift は整数で、値 0 は date を含む週を示します。shift の値が負の場合は過去の週を、正の場合は将来の週を示します。 |
| first\_week\_day | 週の開始日を指定します。省略されている場合は、変数 FirstWeekDay の値が使用されます。<br><br>first\_week\_day には、0 が月曜日、1 が火曜日、2 が水曜日、3 が木曜日、4 が金曜日、5 が土曜日、6 が日曜日の値を使用できます。<br><br>システム変数の詳細については、[FirstWeekDay](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/FirstWeekDay.htm) を参照してください。 |

## weekstart の使用目的

`weekstart()` 関数は、ユーザーがこれまで経過した週の端数を計算に使用する場合に、数式の一部として一般的に使用されます。例えば、その週でこれまでに従業員が稼いだ合計賃金を計算したい場合に使用できます。

次の例は下記の内容を推測します。

```
SET FirstWeekDay=0;
```

関数の例

| 例 | 結果 |
| --- | --- |
| `weekstart('01/12/2013')` | 01/07/2013 を返します。 |
| `weekstart('01/12/2013', -1 )` | 11/31/2012 を返します。 |
| `weekstart('01/12/2013', 0, 1)` | 01/08/2013 を返します。 |

## リージョンの設定

特に指定のない限り、このトピックの例では 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)」を参照してください。

週数と週番号の ISO 設定を希望する場合、スクリプトに必ず次を組み込むようにしてください。

```
Set DateFormat   ='YYYY-MM-DD'; 
Set FirstWeekDay =0;    // Monday as first week day
Set BrokenWeeks  =0;    //(use unbroken weeks)
Set ReferenceDay =4;    // Jan 4th is always in week 1
```

US 設定を希望する場合、スクリプトに必ず次を組み込むようにしてください。

```
Set DateFormat   ='M/D/YYYY';
Set FirstWeekDay =6;    // Sunday as first week day
Set BrokenWeeks  =1;    //(use broken weeks)
Set ReferenceDay =1;    // Jan 1st is always in week 1
```

上記の例では、weekstart() 関数から次のような結果になります。

Weekstart 関数の例

| 日付 | ISO 週開始 | 米国週開始 |
| --- | --- | --- |
| 2020 年 12 月 26 日 (土) | 2020-12-21 | 12/20/2020 |
| 2020 年 12 月 27 日 (日) | 2020-12-21 | 12/27/2020 |
| 2020 年 12 月 28 日 (月) | 2020-12-28 | 12/27/2020 |
| 2020 年 12 月 29 日 (火) | 2020-12-28 | 12/27/2020 |
| 2020 年 12 月 30 日 (水) | 2020-12-28 | 12/27/2020 |
| 2020 年 12 月 31 日 (木) | 2020-12-28 | 12/27/2020 |
| 2021 年 1 月 1 日 (金) | 2020-12-28 | 12/27/2020 |
| 2021 年 1 月 2 日 (土) | 2020-12-28 | 12/27/2020 |
| 2021 年 1 月 3 日 (日) | 2020-12-28 | 1/3/2021 |
| 2021 年 1 月 4 日 (月) | 2021-01-04 | 1/3/2021 |
| 2021 年 1 月 5 日 (火) | 2021-01-04 | 1/3/2021 |

情報メモISO 列は月曜日、US 列は日曜日が週初めとなります。

## 例 1 – 追加の引数なし

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

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

概要

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

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

* Transactions というテーブルにロードされる、2022 年の一連のトランザクションを含むデータセット。

* DateFormat システム変数形式 (MM/DD/YYYY) で提供されている日付項目。

* トランザクションが発生する週の始めのタイムスタンプを返す、項目 [start\_of\_week] の作成。

ロード スクリプト

```
SET FirstWeekDay=6;

Transactions:
    Load
        *,
        weekstart(date) as start_of_week,
        timestamp(weekstart(date)) as start_of_week_timestamp
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

結果

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

* date

* start\_of\_week

* start\_of\_week\_timestamp

結果テーブル

| date | start\_of\_week | start\_of\_week\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/02/2022 | 1/2/2022 12:00:00 AM |
| 1/19/2022 | 01/16/2022 | 1/16/2022 12:00:00 AM |
| 2/5/2022 | 01/30/2022 | 1/30/2022 12:00:00 AM |
| 2/28/2022 | 02/27/2022 | 2/27/2022 12:00:00 AM |
| 3/16/2022 | 03/13/2022 | 3/13/2022 12:00:00 AM |
| 4/1/2022 | 03/27/2022 | 3/27/2022 12:00:00 AM |
| 5/7/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 5/16/2022 | 05/15/2022 | 5/15/2022 12:00:00 AM |
| 6/15/2022 | 06/12/2022 | 6/12/2022 12:00:00 AM |
| 6/26/2022 | 06/26/2022 | 6/26/2022 12:00:00 AM |
| 7/9/2022 | 07/03/2022 | 7/3/2022 12:00:00 AM |
| 7/22/2022 | 07/17/2022 | 7/17/2022 12:00:00 AM |
| 7/23/2022 | 07/17/2022 | 7/17/2022 12:00:00 AM |
| 7/27/2022 | 07/24/2022 | 7/24/2022 12:00:00 AM |
| 8/2/2022 | 07/31/2022 | 7/31/2022 12:00:00 AM |
| 8/8/2022 | 08/07/2022 | 8/7/2022 12:00:00 AM |
| 8/19/2022 | 08/14/2022 | 8/14/2022 12:00:00 AM |
| 9/26/2022 | 09/25/2022 | 9/25/2022 12:00:00 AM |
| 10/14/2022 | 10/09/2022 | 10/9/2022 12:00:00 AM |
| 10/29/2022 | 10/23/2022 | 10/23/2022 12:00:00 AM |

start\_of\_week 項目は、weekstart() 関数を使用し、関数の引数として日付項目を渡すことにより、先行する LOAD ステートメントで作成されます。

weekstart() 関数は、まず日付値がどの週に該当するかを識別し、その週の最初のミリ秒のタイムスタンプを返します。

weekstart() 関数の図、追加の引数がない例

weekstart() 関数の図、追加の引数がない例

weekstart()weekstart() 関数の図、追加の引数がない例 ![weekstart 関数が、トランザクション日付を、トランザクションが発生した週の最初のミリ秒のタイムスタンプに変換する方法を示した図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekstart-examples-no-add-arg.png)

トランザクション 8191 は 2 月 5 日に発生しました。FirstWeekDay システム変数は週の初日を日曜日に設定します。weekstart() 関数は、2 月 5 日前の最初の日曜日、つまり週の始めが 1 月 30 日であったことを特定します。そのため、そのトランザクションの start\_of\_week 値がその日の最初のミリ秒 1 月 30 日 12:00:00 AM を返します。

## 例 2 – period\_no

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

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

概要

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

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

* 最初の例と同じデータセットとシナリオ。

* トランザクションが発生する前の四半期の始めのタイムスタンプを返す、項目 [previous\_week\_start] の作成。

ロード スクリプト

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

Transactions:
    Load
        *,
        weekstart(date,-1) as previous_week_start,
        timestamp(weekstart(date,-1)) as previous_week_start_timestamp
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

結果

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

* date

* previous\_week\_start

* previous\_week\_start\_timestamp

結果テーブル

| date | previous\_week\_start | previous\_week\_start\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 12/26/2021 | 12/26/2021 12:00:00 AM |
| 1/19/2022 | 01/09/2022 | 1/9/2022 12:00:00 AM |
| 2/5/2022 | 01/23/2022 | 1/23/2022 12:00:00 AM |
| 2/28/2022 | 02/20/2022 | 2/20/2022 12:00:00 AM |
| 3/16/2022 | 03/06/2022 | 3/6/2022 12:00:00 AM |
| 4/1/2022 | 03/20/2022 | 3/20/2022 12:00:00 AM |
| 5/7/2022 | 04/24/2022 | 4/24/2022 12:00:00 AM |
| 5/16/2022 | 05/08/2022 | 5/8/2022 12:00:00 AM |
| 6/15/2022 | 06/05/2022 | 6/5/2022 12:00:00 AM |
| 6/26/2022 | 06/19/2022 | 6/19/2022 12:00:00 AM |
| 7/9/2022 | 06/26/2022 | 6/26/2022 12:00:00 AM |
| 7/22/2022 | 07/10/2022 | 7/10/2022 12:00:00 AM |
| 7/23/2022 | 07/10/2022 | 7/10/2022 12:00:00 AM |
| 7/27/2022 | 07/17/2022 | 7/17/2022 12:00:00 AM |
| 8/2/2022 | 07/24/2022 | 7/24/2022 12:00:00 AM |
| 8/8/2022 | 07/31/2022 | 7/31/2022 12:00:00 AM |
| 8/19/2022 | 08/07/2022 | 8/7/2022 12:00:00 AM |
| 9/26/2022 | 09/18/2022 | 9/18/2022 12:00:00 AM |
| 10/14/2022 | 10/02/2022 | 10/2/2022 12:00:00 AM |
| 10/29/2022 | 10/16/2022 | 10/16/2022 12:00:00 AM |

この例では、-1 の period\_no が weekstart() 関数でオフセット引数として使用されたため、関数は最初にトランザクションが発生した週を識別します。次に、1 週間前を調べて、その週の最初のミリ秒を識別します。

weekstart() 関数の図、period\_no の例

weekstart() 関数の図、period\_no の例

weekstart()weekstart() 関数の図、period\_no の例 ![weekstart 関数が、トランザクション日付を、トランザクションが発生した週の最初のミリ秒のタイムスタンプに変換する方法を示した図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekstart-examples-period-no.png)

トランザクション 8196 は 6 月 15 日に発生しました。weekstart() 関数は、週が 6 月 12 日に開始することを特定します。そのため、前の週は 6 月 5 日 12:00:00 AM に開始されます。これは、[previous\_week\_start] 項目に対して返される値です。

## 例 3 – first\_week\_day

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

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

概要

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

ロード スクリプトには、最初の例と同じデータセットとシナリオが含まれます。ただし、この例では、勤務週の初日として火曜日を設定する必要があります。

ロード スクリプト

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

Transactions:
    Load
        *,
        weekstart(date,0,1) as start_of_week,
        timestamp(weekstart(date,0,1)) as start_of_week_timestamp
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

結果

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

* date

* start\_of\_week

* start\_of\_week\_timestamp

結果テーブル

| date | start\_of\_week | start\_of\_week\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/04/2022 | 1/4/2022 12:00:00 AM |
| 1/19/2022 | 01/18/2022 | 1/18/2022 12:00:00 AM |
| 2/5/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 2/28/2022 | 02/22/2022 | 2/22/2022 12:00:00 AM |
| 3/16/2022 | 03/15/2022 | 3/15/2022 12:00:00 AM |
| 4/1/2022 | 03/29/2022 | 3/29/2022 12:00:00 AM |
| 5/7/2022 | 05/03/2022 | 5/3/2022 12:00:00 AM |
| 5/16/2022 | 05/10/2022 | 5/10/2022 12:00:00 AM |
| 6/15/2022 | 06/14/2022 | 6/14/2022 12:00:00 AM |
| 6/26/2022 | 06/21/2022 | 6/21/2022 12:00:00 AM |
| 7/9/2022 | 07/05/2022 | 7/5/2022 12:00:00 AM |
| 7/22/2022 | 07/19/2022 | 7/19/2022 12:00:00 AM |
| 7/23/2022 | 07/19/2022 | 7/19/2022 12:00:00 AM |
| 7/27/2022 | 07/26/2022 | 7/26/2022 12:00:00 AM |
| 8/2/2022 | 08/02/2022 | 8/2/2022 12:00:00 AM |
| 8/8/2022 | 08/02/2022 | 8/2/2022 12:00:00 AM |
| 8/19/2022 | 08/16/2022 | 8/16/2022 12:00:00 AM |
| 9/26/2022 | 09/20/2022 | 9/20/2022 12:00:00 AM |
| 10/14/2022 | 10/11/2022 | 10/11/2022 12:00:00 AM |
| 10/29/2022 | 10/25/2022 | 10/25/2022 12:00:00 AM |

この場合、first\_week\_date 引数 1 が weekstart() 関数で使用されているため、週の初日として火曜日を設定します。

weekstart() 関数、first\_week\_day 例の図

weekstart() 関数、first\_week\_day 例の図

weekstart()weekstart() 関数、first\_week\_day 例の図 ![weekstart 関数が、トランザクション日付を、トランザクションが発生した週の最初のミリ秒のタイムスタンプに変換する方法を示した図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekstart-examples-first-week-day.png)

トランザクション 8191 は、2 月 5 日に発生しました。weekstart() 関数は、この日付前の最初の火曜日、つまり週の最初および返された値は 2 月 1 日 12:00:00 AM であることを特定します。

## 例 4 – チャート オブジェクトの例

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

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

概要

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

ロード スクリプトには、最初の例と同じデータセットとシナリオが含まれます。

ただし、この例では、変更されていないデータセットがアプリケーションにロードされます。トランザクションが発生した月の始めのタイムスタンプを返す計算は、アプリケーションのチャート オブジェクトのメジャーとして作成されます。

ロード スクリプト

```
Transactions:

Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

結果

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

トランザクションが発生する週の初めを計算するには、次のメジャーを計算します。

* =weekstart(date)

* =timestamp(weekstart(date))

結果テーブル

| date | start\_of\_week | start\_of\_week\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/02/2022 | 1/2/2022 12:00:00 AM |
| 1/19/2022 | 01/16/2022 | 1/16/2022 12:00:00 AM |
| 2/5/2022 | 01/30/2022 | 1/30/2022 12:00:00 AM |
| 2/28/2022 | 02/27/2022 | 2/27/2022 12:00:00 AM |
| 3/16/2022 | 03/13/2022 | 3/13/2022 12:00:00 AM |
| 4/1/2022 | 03/27/2022 | 3/27/2022 12:00:00 AM |
| 5/7/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 5/16/2022 | 05/15/2022 | 5/15/2022 12:00:00 AM |
| 6/15/2022 | 06/12/2022 | 6/12/2022 12:00:00 AM |
| 6/26/2022 | 06/26/2022 | 6/26/2022 12:00:00 AM |
| 7/9/2022 | 07/03/2022 | 7/3/2022 12:00:00 AM |
| 7/22/2022 | 07/17/2022 | 7/17/2022 12:00:00 AM |
| 7/23/2022 | 07/17/2022 | 7/17/2022 12:00:00 AM |
| 7/27/2022 | 07/24/2022 | 7/24/2022 12:00:00 AM |
| 8/2/2022 | 07/31/2022 | 7/31/2022 12:00:00 AM |
| 8/8/2022 | 08/07/2022 | 8/7/2022 12:00:00 AM |
| 8/19/2022 | 08/14/2022 | 8/14/2022 12:00:00 AM |
| 9/26/2022 | 09/25/2022 | 9/25/2022 12:00:00 AM |
| 10/14/2022 | 10/09/2022 | 10/9/2022 12:00:00 AM |
| 10/29/2022 | 10/23/2022 | 10/23/2022 12:00:00 AM |

[start\_of\_week] メジャーは、weekstart() 関数を使用し、関数の引数として [date] 項目を渡すことにより、チャート オブジェクトで作成されます。

weekstart() 関数は、まず日付値がどの週に該当するかを識別し、その週の最初のミリ秒のタイムスタンプを返します。

weekstart() 関数の図、チャート オブジェクトの例

weekstart() 関数の図、チャート オブジェクトの例

weekstart()weekstart() 関数の図、チャート オブジェクトの例 ![weekstart 関数が、トランザクション日付を、トランザクションが発生した週の最初のミリ秒のタイムスタンプに変換する方法を示した図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekstart-examples-chart-object.png)

トランザクション 8191 は 2 月 5 日に発生しました。FirstWeekDay システム変数は週の初日を日曜日に設定します。weekstart() 関数は、2 月 5 日の前の最初の日曜日、つまり週の始めが 1 月 30 日であったことを特定します。そのため、トランザクションの start\_of\_week 値は、その日の最初のミリ秒である 1 月 30 日 12:00:00 AM を返します。

## 例 5 – シナリオ

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

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

概要

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

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

* 「Payroll」というテーブルにロードされるデータセット。

* 従業員 ID、従業員名および各従業員の平均日次賃金で構成されたデータ。

従業員は月曜日に勤務を開始し、週に 6 日間働きます。FirstWeekDay システム変数は変更できません。

エンドユーザーは、従業員 ID と従業員名別にその週のその日までに稼いだ賃金を表示するチャート オブジェクトを求めています。

ロード スクリプト

```
Payroll: 
Load
*
Inline 
[
employee_id,employee_name,day_rate
182,Mark, $150
183,Deryck, $125
184,Dexter, $125
185,Sydney,$270
186,Agatha,$128
];
```

結果

次の手順を実行します。

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

   * employee\_id

   * employee\_name

2. 次に、その週のその日までに稼いだ賃金を計算するメジャーを作成します。

   =if(today(1)-weekstart(today(1),0,0)&lt;7,(today(1)-weekstart(today(1),0,0))\*day\_rate,day\_rate\*6)

3. メジャーの [数値書式] を [通貨] に設定します。

結果テーブル

| employee\_id | employee\_name | =if(today(1)-weekstart(today(1),0,0)&lt;7,(today(1)-weekstart(today(1),0,0))\*day\_rate,day\_rate\*6) |
| --- | --- | --- |
| 182 | Mark | $600.00 |
| 183 | Deryck | $500.00 |
| 184 | Dexter | $500.00 |
| 185 | Sydney | $1080.00 |
| 186 | Agatha | $512.00 |

weekstart() 関数は、今日の日付を第一引数、0 を第 3 引数として使うことにより、週の初日として月曜日を設定し、現在の週の開始日付を返します。その結果を現在の日付から減算することにより、数式は今週経過した日数を返します。

次に条件で、この週の経過日数が 6 日を超えているかどうかが評価されます。その場合、従業員の day\_rate は 6 日間で乗算されます。そうでない場合、day\_rate は、今週発生した日数で乗算されます。