getWeekday関数

本ページには広告が含まれています。

日付から曜日番号を取得します。既定では戻り値は1(日曜)から7(土曜)の範囲の整数を返します。

曜日名を取得したい場合は、getWeekdayName関数 (自作関数)を使用します。

構文
  1. 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)省略可
取得する曜日番号の種類を示す03または1117の値。117は日曜日を1211は月曜日を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(土曜)

プログラム

UWSC

解説

    2行目
    UWSC
    もしdateシリアル値なら、text関数 (自作関数)yyyy/mm/ddの形式の日付文字列に変換。
    3-4行目
    UWSC
    第二引数にdateを指定してGETTIME関数を実行し、特殊変数(G_TIME_WW)の値をwに代入。この処理でdateに指定した日付の曜日番号がwに代入されます。
    5,16行目
    UWSC
    typeの値によって処理分けします。
    6-7行目
    UWSC

    type0のときはwの値を返します。返す値は以下のとおりです。

    曜日
    曜日番号0123456
    8-9行目
    UWSC

    type1のときはw1を加えた値を返します。返す値は以下のとおりです。

    曜日
    曜日番号1234567
    10-11行目
    UWSC

    type2のときはwの値を返します。ただしw0のときのみ7を返します。返す値は以下のとおりです。

    曜日
    曜日番号7123456
    12-13行目
    UWSC

    type3のときはw6を加えて7で割った余りを返します。返す値は以下のとおりです。

    曜日
    曜日番号6012345
    14-15行目
    UWSC

    返す値は以下のとおりです。

    種類曜日
    117123456
    126712345
    135671234
    144567123
    153456712
    162345671
    171234567

曜日番号の種類と戻り値の関係

typeは基本的にExcelのWEEKDAY関数(WEEKDAY 関数 - Microsoft サポート参照)と同じですが、type0を指定したときはUWSCの特殊変数G_TIME_WWの曜日番号(0:日曜〜6:土曜)と対応させています。

以下は曜日基準でtypeに指定した値と戻り値の関係を表にしたものです。

種類戻り値
00123456
1(省略)1234567
27123456
36012345
117123456
126712345
135671234
144567123
153456712
162345671
171234567

以下は値基準でtypeに指定した値と戻り値の関係を表にしたものです。内容自体は上の表と同じです。

種類戻り値
012 34567
0
1(省略)
2
3
11
12
13
14
15
16
17

以下は2024/10/06(日)の曜日番号を取得するプログラムです。typeは省略したとき1を指定したことになるので、戻り値と曜日の関係は以下のようになります。

戻り値1234567
曜日
UWSC
結果
プレーンテキスト

以下はtypeに値を指定したときの結果の違いです。2024/10/06は日曜日ですが、週開始曜日を何曜日にするかで結果は変化します。

種類戻り値
1234567
11
12
13
14
15
16
17
UWSC
結果
プレーンテキスト

使い方

指定日の曜日番号を取得

2024/10/02の曜日番号を求めます。日付は文字列で指定しています。2024/10/02は水曜日で日曜日から数えて4日目なので4を返します。

UWSC
結果
プレーンテキスト

今日の曜日番号を取得

今日の曜日番号を取得します。日付は文字列だけでなくシリアル値で指定することもできます。today関数 (自作関数)で今日のシリアル値を取得してから、getWeekday関数 (自作関数)で曜日番号を求めます。日曜日を1、土曜日を7とした範囲の値が返ります。

UWSC
結果
プレーンテキスト

明日の曜日番号を取得

today関数 (自作関数)で今日の日付を取得しdateAdd関数 (自作関数)1を加算し明日の日付を求めてから、getWeekday関数 (自作関数)で曜日番号を取得します。

UWSC

3日前の曜日番号を取得

3日前の曜日番号を取得します。過去の日付を求めときdateAdd関数 (自作関数)の第二引数でマイナスの値を指定します。

UWSC

指定日から指定した日数を加算した日付の曜日番号を取得

2024/10/04から20日後の曜日番号を求めます。

2024/10/04の20日後は2024/10/24(木)で木曜日は日曜日から数えて5日目なので曜日番号は5となります。

UWSC
結果
プレーンテキスト

指定日が土日かどうか

2024/10/05が土日かどうかを調べます。typeを省略したときは日曜が1、土曜が7なので条件式は値が17かの2つ書かなければなりません。type2を指定したとき、土曜日は5、日曜日は6と隣り合った値になるので、曜日番号が5以上であるかを調べるだけでよくなります。

UWSC
結果
プレーンテキスト

プログラム実行例

今週の土曜日の日付を求める

まずgetWeekday関数で曜日番号(日曜:0〜土曜:6)を求め、今日の日付から引くことで今週の日曜日の日付を求めます。

-1 * getWeekday(date)で今週の日曜日を求めてます。

その日付から求めたい曜日の曜日番号を加えることで、目的の日付を求められます。

UWSC
使用関数

来週の日曜日と土曜日の日付を求める

UWSC
使用関数

指定した日付の週の日曜日と土曜日の日付を求める

UWSC
結果
プレーンテキスト
使用関数

今週の日曜日の日付を求める

UWSC
使用関数

関連記事

getWeekdayName関数 (自作関数)
引数で指定した曜日番号に対応する曜日名を返します。
getNthWeekday関数 (自作関数)
指定年月の第n週のw曜日(第nW曜日)の日付を返します。
GETTIME関数 (スクリプト関数)
日付、時間を取得します。
getYear関数 (自作関数)
指定された日付のを返します。
getMonth関数 (自作関数)
指定された日付のを返します。
getDay関数 (自作関数)
指定された日付のを返します。
getEndOfMonth関数 (自作関数)
dateで指定された月の月末日を取得します。
today関数 (自作関数)
今日の日付を返します。
dateString関数 (自作関数)
指定された日付を西暦から和暦に変換します。
dateValue関数 (自作関数)
日付形式の文字列をシリアル値に変換します。