日付から曜日番号を取得します。既定では戻り値は1(日曜)から7(土曜)の範囲の整数を返します。
曜日名を取得したい場合は、getWeekdayName関数 (自作関数)を使用します。
- 構文
- Integer = getWeekday( date, type )
- 引数
- date (String)必須
- 日付文字列(”YYYYMMDD” or “YYYY/MM/DD” or “YYYY-MM-DD” or “YYYYMMDDHHNNSS” or “YYYY/MM/DD HH:NN:SS”)もしくはシリアル値
- type (Integer = 1)省略可
- 取得する曜日番号の種類を示す0〜3または11〜17の値。1と17は日曜日を1、2と11は月曜日を1とカウントします。11以降はExcel2010で追加された値で、互換性を保つために重複した値があります。
- 戻り値
typeで指定した種類によって以下の値を返します。
- 0
- 0(日曜)〜6(土曜)
- 1
- 1(日曜)~7(土曜)
- 2
- 1(月曜)~7(日曜)
- 3
- 0(月曜)〜6(日曜)
- 11
- 1(月曜)~7(日曜)
- 12
- 1(火曜)~7(月曜)
- 13
- 1(水曜)~7(火曜)
- 14
- 1(木曜)~7(水曜)
- 15
- 1(金曜)~7(木曜)
- 16
- 1(土曜)~7(金曜)
- 17
- 1(日曜)~7(土曜)
プログラム
解説
- 2行目
- もしdateがシリアル値なら、text関数 (自作関数)でyyyy/mm/ddの形式の日付文字列に変換。
- 3-4行目
- 第二引数にdateを指定してGETTIME関数を実行し、特殊変数(G_TIME_WW)の値をwに代入。この処理でdateに指定した日付の曜日番号がwに代入されます。
- 5,16行目
- typeの値によって処理分けします。
- 6-7行目
typeが0のときはwの値を返します。返す値は以下のとおりです。
曜日 日 月 火 水 木 金 土 曜日番号 0 1 2 3 4 5 6 - 8-9行目
typeが1のときはwに1を加えた値を返します。返す値は以下のとおりです。
曜日 日 月 火 水 木 金 土 曜日番号 1 2 3 4 5 6 7 - 10-11行目
typeが2のときはwの値を返します。ただしwが0のときのみ7を返します。返す値は以下のとおりです。
曜日 日 月 火 水 木 金 土 曜日番号 7 1 2 3 4 5 6 - 12-13行目
typeが3のときはwに6を加えて7で割った余りを返します。返す値は以下のとおりです。
曜日 日 月 火 水 木 金 土 曜日番号 6 0 1 2 3 4 5 - 14-15行目
返す値は以下のとおりです。
種類 曜日 日 月 火 水 木 金 土 11 7 1 2 3 4 5 6 12 6 7 1 2 3 4 5 13 5 6 7 1 2 3 4 14 4 5 6 7 1 2 3 15 3 4 5 6 7 1 2 16 2 3 4 5 6 7 1 17 1 2 3 4 5 6 7
曜日番号の種類と戻り値の関係
typeは基本的にExcelのWEEKDAY関数(WEEKDAY 関数 - Microsoft サポート参照)と同じですが、typeに0を指定したときはUWSCの特殊変数G_TIME_WWの曜日番号(0:日曜〜6:土曜)と対応させています。
以下は曜日基準でtypeに指定した値と戻り値の関係を表にしたものです。
| 種類 | 戻り値 | ||||||
|---|---|---|---|---|---|---|---|
| 日 | 月 | 火 | 水 | 木 | 金 | 土 | |
| 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| 1(省略) | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 2 | 7 | 1 | 2 | 3 | 4 | 5 | 6 |
| 3 | 6 | 0 | 1 | 2 | 3 | 4 | 5 |
| 11 | 7 | 1 | 2 | 3 | 4 | 5 | 6 |
| 12 | 6 | 7 | 1 | 2 | 3 | 4 | 5 |
| 13 | 5 | 6 | 7 | 1 | 2 | 3 | 4 |
| 14 | 4 | 5 | 6 | 7 | 1 | 2 | 3 |
| 15 | 3 | 4 | 5 | 6 | 7 | 1 | 2 |
| 16 | 2 | 3 | 4 | 5 | 6 | 7 | 1 |
| 17 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
以下は値基準でtypeに指定した値と戻り値の関係を表にしたものです。内容自体は上の表と同じです。
| 種類 | 戻り値 | |||||||
|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
| 0 | 日 | 月 | 火 | 水 | 木 | 金 | 土 | |
| 1(省略) | 日 | 月 | 火 | 水 | 木 | 金 | 土 | |
| 2 | 月 | 火 | 水 | 木 | 金 | 土 | 日 | |
| 3 | 月 | 火 | 水 | 木 | 金 | 土 | 日 | |
| 11 | 月 | 火 | 水 | 木 | 金 | 土 | 日 | |
| 12 | 火 | 水 | 木 | 金 | 土 | 日 | 月 | |
| 13 | 水 | 木 | 金 | 土 | 日 | 月 | 火 | |
| 14 | 木 | 金 | 土 | 日 | 月 | 火 | 水 | |
| 15 | 金 | 土 | 日 | 月 | 火 | 水 | 木 | |
| 16 | 土 | 日 | 月 | 火 | 水 | 木 | 金 | |
| 17 | 日 | 月 | 火 | 水 | 木 | 金 | 土 | |
以下は2024/10/06(日)の曜日番号を取得するプログラムです。typeは省略したとき1を指定したことになるので、戻り値と曜日の関係は以下のようになります。
| 戻り値 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| 曜日 | 日 | 月 | 火 | 水 | 木 | 金 | 土 |
- 結果
以下はtypeに値を指定したときの結果の違いです。2024/10/06は日曜日ですが、週開始曜日を何曜日にするかで結果は変化します。
| 種類 | 戻り値 | ||||||
|---|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
| 11 | 月 | 火 | 水 | 木 | 金 | 土 | 日 |
| 12 | 火 | 水 | 木 | 金 | 土 | 日 | 月 |
| 13 | 水 | 木 | 金 | 土 | 日 | 月 | 火 |
| 14 | 木 | 金 | 土 | 日 | 月 | 火 | 水 |
| 15 | 金 | 土 | 日 | 月 | 火 | 水 | 木 |
| 16 | 土 | 日 | 月 | 火 | 水 | 木 | 金 |
| 17 | 日 | 月 | 火 | 水 | 木 | 金 | 土 |
- 結果
使い方
指定日の曜日番号を取得
2024/10/02の曜日番号を求めます。日付は文字列で指定しています。2024/10/02は水曜日で日曜日から数えて4日目なので4を返します。
- 結果
今日の曜日番号を取得
今日の曜日番号を取得します。日付は文字列だけでなくシリアル値で指定することもできます。today関数 (自作関数)で今日のシリアル値を取得してから、getWeekday関数 (自作関数)で曜日番号を求めます。日曜日を1、土曜日を7とした範囲の値が返ります。
- 結果
明日の曜日番号を取得
today関数 (自作関数)で今日の日付を取得しdateAdd関数 (自作関数)で1を加算し明日の日付を求めてから、getWeekday関数 (自作関数)で曜日番号を取得します。
3日前の曜日番号を取得
3日前の曜日番号を取得します。過去の日付を求めときdateAdd関数 (自作関数)の第二引数でマイナスの値を指定します。
指定日から指定した日数を加算した日付の曜日番号を取得
2024/10/04から20日後の曜日番号を求めます。
2024/10/04の20日後は2024/10/24(木)で木曜日は日曜日から数えて5日目なので曜日番号は5となります。
- 結果
指定日が土日かどうか
2024/10/05が土日かどうかを調べます。typeを省略したときは日曜が1、土曜が7なので条件式は値が1か7かの2つ書かなければなりません。typeに2を指定したとき、土曜日は5、日曜日は6と隣り合った値になるので、曜日番号が5以上であるかを調べるだけでよくなります。
- 結果
プログラム実行例
今週の土曜日の日付を求める
まずgetWeekday関数で曜日番号(日曜:0〜土曜:6)を求め、今日の日付から引くことで今週の日曜日の日付を求めます。
-1 * getWeekday(date)で今週の日曜日を求めてます。
その日付から求めたい曜日の曜日番号を加えることで、目的の日付を求められます。
来週の日曜日と土曜日の日付を求める
指定した日付の週の日曜日と土曜日の日付を求める
今週の日曜日の日付を求める
関連記事
- getWeekdayName関数 (自作関数)
- 引数で指定した曜日番号に対応する曜日名を返します。
- getNthWeekday関数 (自作関数)
- 指定年月の第n週のw曜日(第nW曜日)の日付を返します。
- GETTIME関数 (スクリプト関数)
- 日付、時間を取得します。
- getYear関数 (自作関数)
- 指定された日付の年を返します。
- getMonth関数 (自作関数)
- 指定された日付の月を返します。
- getDay関数 (自作関数)
- 指定された日付の日を返します。
- getEndOfMonth関数 (自作関数)
- dateで指定された月の月末日を取得します。
- today関数 (自作関数)
- 今日の日付を返します。
- dateString関数 (自作関数)
- 指定された日付を西暦から和暦に変換します。
- dateValue関数 (自作関数)
- 日付形式の文字列をシリアル値に変換します。
