• 公開日:
  • 更新日:

エクセルで特定の曜日の日付を抽出する方法

この記事では、Excelで特定の曜日の日付を抽出する方法について説明します。

例えば、必ず実施するイベントや家賃の支払い日などを毎月第3土曜日に決める場合、年間で第3土曜日の日付一覧を自動的に表示させることができます。

また、特定の曜日一覧から休日の祝日の日付のみを除外した状態で表示することも可能です。

エクセルで特定の曜日の日付を抽出する方法

Excelでの日付の抽出は、ある特定の曜日(土曜、日曜など)を1つのみ指定することもできますが、その他様々な設定を行うことができます。

「毎月第何〇曜日」の日付や、祝日を除外した特定の曜日に対応する日付も抽出することができます。詳しくは、以下の解説をご覧ください。

特定の曜日の日付を指定して自動入力する

例えば、Excelのスケジュール表に1月から3月までの毎週月曜日だけ日付を入力したい場合などがあります。そんなときは、日付や曜日を指定して、オートフィルで日付を自動入力すると便利です。

ここでは、月曜日の連続した日付(2023年1月2日と2023年1月9日)と曜日(月曜日)を入力します。

月曜日の連続した日付(2023年1月2日と2023年1月9日)と曜日(月曜日)を選択します。B3セルの右下にカーソルを合わせて「+」マークになったことを確認し、下方向にドラッグしてオートフィルします。

Excelのスケジュール表に1月から3月まで毎週月曜のみの日付が入力されました。

第何〇曜日の日付を抽出する

Excelで年間スケジュールを作成する際、第何〇曜日は何月何日なのかを自動的に入力できると非常に便利です。

例えば、必ず実施するイベントを毎月第3土曜日に決める場合、年間で第3土曜日の日付一覧を自動的に表示させることができます。

第何〇曜日をExcelで自動的に表示できるようにするには、DATE関数とWEEKDAY関数を合わせて使います。

種類戻り値
1または省略1(日曜)~7(土曜)の範囲の整数
21(月曜)~7(日曜)の範囲の整数
30(月曜)~6(日曜)の範囲の整数
111(月曜)~7(日曜)の範囲の整数
121(火曜)~7(月曜)の範囲の整数
131(水曜)~7(火曜)の範囲の整数
141(木曜)~7(水曜)の範囲の整数
151(金曜)~7(木曜)の範囲の整数
161(土曜)~7(金曜)の範囲の整数
171(日曜)~7(土曜)の範囲の整数

WEEKDAY関数では、曜日のシリアル値を示す「戻り値」のパターンは10通りあります。「種類」の数値をWEEKDAY関数の引数にすることにより、戻り値が示している曜日を取り出すことができます。

例えば、種類に「16」を指定すると、土曜日が1、金曜日が7のように返される値が変わります。

以下、毎月第何〇曜日の日付を抽出する方法について解説します。

B4セルを選択する

第3土曜日の日付を入力したいセル(例: B4)を選択します。

DATE関数を入力する

まず、「=DATE(B1,B2,1)+21」を入力します。

DATE関数とは、特定の日付を表すシリアル値を返す関数です。DATE関数の書式は、「=DATE(年,月,日)」ですが、ここでは、2023年1月1日に3週間を表す「21」日を足した「1月22日」を算出します。

1日を引く

1月22日から1(日)を引くと1月21日の第3土曜日になります。

「1」日を引くことを覚えておきます。

WEEKDAY関数を入力する

続けて、「-WEEKDAY(DATE(B1,B2,1)-1,16)」を入力します。WEEKDAY関数の書式は、「=WEEKDAY(シリアル値,種類)」です。

WEEKDAY関数は、日付に対応する曜日を数値で表示する関数です。DATE関数で算出した1月1日は日曜日なので、土曜日にするために「1」を引けば12月31日(土曜日)になります。

そこで、上の戻り値のリストを参照し、土曜日の戻り値が「1」になっている種類を探します。種類「16」が該当するので、これをWEEKDAY関数の引数にします。

12月までオートフィルする

ゆえに、DATE関数に21を足して算出した「1月22日」から、WEEKDAY関数の結果である「1」を引くと、2023年1月の第3土曜日が1月21日で表示されます。

Ctrl + Enterを押して数式を確定したら、B4セルの右下にカーソルを合わせて「+」マークになったことを確認し、右方向にドラッグして2月~12月までの第3土曜日の日付を求めます。

オートフィル完了

2023年1月~12月までの第3土曜日の日付を求めることができました。

他の週と曜日に変更したい場合

他の週と曜日に変更したい場合、「=DATE(B1,B2,1)+21-WEEKDAY(DATE(B1,B2,1)-1,16)」の中で、「21」「-1」「16」のみ変更します。

例えば、第1水曜日にしたいのであれば、上記の要領で「=DATE(B1,B2,1)+7-WEEKDAY(DATE(B1,B2,1)-4,1)」の数式を作ります。

DATE関数で1/1(日)に7日(1週間分)を足す必要があるので、「+21」を「+7」に変更し、返される値が1/8(日)になることを確認します。ゆえに、1/8(日)の前の週の日曜日は1/1で戻り値は「1」、土曜日は1/7で戻り値は「7」であることを把握します。

ここで、「種類16」を「種類1」に変更します。なぜなら、上の表を確認すると、「種類1」は戻り値1が日曜日で、戻り値7が土曜日であるためです。したがって、1/4(水)は戻り値「4」であることを確認します。

つまり、1/8(日)から4を引いた値が第1水曜日である1/4(戻り値4)になるので、「-1」から「-4」に変更します。

特定の曜日から祝日のみ除外して抽出する

特定の平日のみ(例: 月曜日のみ)の一覧を作成した上で、祝日は除外したい場合、WORKDAY.INTL関数を使用して祝日の日付を取り除くことが可能です。

以下、TEXT関数を使って曜日を各セルに入力し、WORKDAY.INTL関数を使用して月曜日の一覧表から祝日の日付のみ除外する方法を説明します。

2022年12月19日を入力

除外したい祝日の日付および曜日のリストを用意します。

A2セルに先頭の月曜日(例: 2022年12月19日)を入力します。

TEXT関数を入力する

12月19日の曜日を入力したいのでB2セルを選択します。

数式バーに「=TEXT(A2,"aaa")」を入力します。TEXT関数による曜日入力の詳細については、以下の記事を参照してください。

エクセルで曜日を日本語表記にする方法

曜日をオートフィルする

Ctrl + Enterを押してB2セルの編集を確定します。

B2セルの右下にカーソルを合わせて「+」マークになったことを確認し、下方向にドラッグしてオートフィルします。

WORKDAY.INTL関数を入力する

「2022年12月19日」の日付が入力されているセルの1つ下(例: A3セル)を選択します。

数式バーに「=WORKDAY.INTL(A2,1,"0111111",$E$2:$E$3)」を入力します。

WORKDAY.INTL関数とは、日付に対応する曜日を返す関数です。書式は、「=WORKDAY.INTL(開始日, 日数, [週末], [休日])」です。

ここでは、「開始日」をA2セルとし、「日数」は1とします。

この「日数」の1は、本来は開始日から起算して1日後を意味しますが、今回は曜日指定をしているので「1週間後」を指します。

「週末」は勤務日を「0」、休日を「1」で表すことができ、「月火水木金土」の順番で並べます。ここでは、月曜日のみを0にし、他の曜日は1にします。

E2およびE3セルは祝日一覧の日付なので、絶対参照で入力します。

オートフィルする

B3セルの右下にカーソルを合わせて「+」マークになったことを確認し、下方向にドラッグしてオートフィルします。

祝日を除くことに成功

その結果、祝日(2023年1月2日、1月9日)以外の月曜日の日付が自動で入力されました。