【Excel】WEEKDAY関数で曜日判定・土日自動識別をする方法

【Excel】WEEKDAY関数で曜日判定・土日自動識別をする方法
🛡️ 超解決

Excelで日付から曜日を判定したい場面は多いでしょう。例えば、週単位の売上集計で土日を除外して計算したい場合などです。しかし、曜日を直接表示する関数はあっても、土日を自動で識別するのは少し工夫が必要です。この記事では、ExcelのWEEKDAY関数を使って、日付から曜日を数値で取得し、さらに土日を自動で識別する方法を解説します。この関数を使いこなせば、より高度なデータ分析や集計がスムーズに行えるようになります。

WEEKDAY関数は、特定の日付に対応する曜日を数値で返します。この数値を活用することで、曜日ごとの集計や、土日を条件に異なる処理を行うことが可能になります。この記事を読めば、WEEKDAY関数の基本的な使い方から、土日を識別するための応用的なテクニックまで、具体的な手順とともに理解できるでしょう。

【要点】WEEKDAY関数で曜日判定・土日自動識別

  • WEEKDAY関数: 日付を指定し、曜日を数値で取得する。
  • リターンタイプ引数: 曜日の数値をどのように返すか(日曜日を1とするか、月曜日を1とするかなど)を指定する。
  • IF関数との組み合わせ: WEEKDAY関数の結果を基に、土日(特定の数値)かどうかを判定し、条件に応じた表示や処理を行う。
  • 土日自動識別: WEEKDAY関数とIF関数を組み合わせることで、土曜日・日曜日を自動で識別し、例えば「土日祝日」などの文字列を表示できる。

ADVERTISEMENT

WEEKDAY関数の基本とリターンタイプ

WEEKDAY関数は、指定した日付が週の何番目の曜日であるかを数値で返します。この関数の書式は「=WEEKDAY(シリアル値, [リターンタイプ])」です。第一引数「シリアル値」には、曜日を調べたい日付が入ったセルを指定します。第二引数「リターンタイプ」は省略可能ですが、ここを指定することで、どの曜日を「1」として数えるかを細かく設定できます。このリターンタイプの設定が、後述する土日判定の鍵となります。

リターンタイプには、主に以下の7つの種類があります。Excelのバージョンによって利用できるリターンタイプが異なる場合がありますが、Excel for Microsoft 365ではすべて利用可能です。

  • 1 または省略: 日曜日を1、月曜日を2、…、土曜日を7として返します。
  • 2: 月曜日を1、火曜日を2、…、日曜日を7として返します。
  • 3: 月曜日を0、火曜日を1、…、日曜日を6として返します。
  • 11: 月曜日を1、火曜日を2、…、日曜日を7として返します。 (タイプ2と同じ結果)
  • 12: 月曜日を1、火曜日を2、…、日曜日を7として返します。 (タイプ2と同じ結果)
  • 13: 月曜日を1、火曜日を2、…、日曜日を7として返します。 (タイプ2と同じ結果)
  • 14: 月曜日を1、火曜日を2、…、日曜日を7として返します。 (タイプ2と同じ結果)

最も一般的に使われるのは、リターンタイプを省略するか「1」を指定する方法です。この場合、日曜日が「1」、月曜日が「2」、…、土曜日が「7」となります。土日を判定したい場合、この「1」と「7」という数値に着目することになります。

お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

WEEKDAY関数を使った曜日判定の手順

ここでは、具体的なExcelシートを使って、WEEKDAY関数で曜日を判定する手順を説明します。まず、日付が入力されている列を用意し、隣の列に曜日を判定するための数式を入力します。ここでは、A列に日付があり、B列に曜日を表示させることを想定します。

  1. 曜日表示用の列を準備する
    ExcelシートのA列に日付データ(例: 2023/10/26)が入力されているとします。B列の先頭セル(例: B2)を選択します。
  2. WEEKDAY関数を入力する
    選択したセル(B2)に、以下の数式を入力します。

    =WEEKDAY(A2)

    この数式では、リターンタイプを省略しています。そのため、日曜日が1、月曜日が2、…、土曜日が7として返されます。

  3. 数式をコピーする
    数式を入力したら、Enterキーを押します。A2セルの日付に対応する曜日番号がB2セルに表示されます。B2セルのフィルハンドル(セルの右下隅にある小さい四角)をダブルクリックするか、下にドラッグして、A列の日付すべてに対して数式をコピーします。

例えば、A2に「2023/10/26」と入力されていれば、B2には「5」(木曜日)と表示されます。A3に「2023/10/27」と入力されていれば、B3には「6」(金曜日)と表示されます。A4に「2023/10/28」と入力されていれば、B4には「7」(土曜日)と表示されます。このように、WEEKDAY関数を使えば、簡単に曜日を数値で取得できます。

IF関数と組み合わせた土日自動識別

WEEKDAY関数で曜日番号を取得できるようになりました。次に、この数値を利用して、土曜日または日曜日であるかどうかを判定し、例えば「土日」と表示させる方法を解説します。これにはIF関数を組み合わせます。ここでは、B列に曜日番号が表示されていると仮定し、C列に「土日」かどうかの判定結果を表示させます。

土日を判定するには、WEEKDAY関数のリターンタイプを「1」(日曜日=1、土曜日=7)に設定するのが最も分かりやすいでしょう。この場合、返される数値が「1」または「7」であれば土日、それ以外であれば平日と判定できます。

  1. 判定結果表示用の列を準備する
    C列の先頭セル(例: C2)を選択します。
  2. IF関数とWEEKDAY関数を入力する
    C2セルに、以下の数式を入力します。

    =IF(OR(WEEKDAY(A2,1)=1,WEEKDAY(A2,1)=7),"土日","平日")

    この数式は、「A2セルの日付のリターンタイプ1での曜日番号が1(日曜日)または7(土曜日)であるならば、「土日」と表示し、そうでなければ「平日」と表示する」という意味になります。

  3. 数式をコピーする
    数式を入力したら、Enterキーを押します。C2セルに判定結果が表示されます。C2セルのフィルハンドルをダブルクリックするか、下にドラッグして、A列の日付すべてに対して数式をコピーします。

この方法で、日付データがあれば、自動的に「土日」または「平日」という判定結果が得られます。この結果を基に、例えば土日のみを集計対象から除外するなどの処理が容易になります。

ADVERTISEMENT

リターンタイプによる判定方法の使い分け

先ほどはリターンタイプ「1」を使った土日判定を紹介しましたが、他のリターンタイプを設定した場合でも、土日を判定することは可能です。ここでは、リターンタイプ「2」(月曜日=1、日曜日=7)の場合の判定方法を説明します。この場合、土曜日は「6」、日曜日は「7」として返されます。

リターンタイプ「2」を使って土日を判定する数式は以下のようになります。

=IF(OR(WEEKDAY(A2,2)=6,WEEKDAY(A2,2)=7),"土日","平日")

このように、どのリターンタイプを使用しても、土曜日と日曜日がそれぞれどの数値に対応するかを理解していれば、IF関数とOR関数を組み合わせて土日を識別できます。ご自身の使いやすいリターンタイプを選択すると良いでしょう。

さらに、リターンタイプ「3」(月曜日=0、日曜日=6)を使用する場合、土曜日は「5」、日曜日は「6」となります。この場合、数式は以下のようになります。

=IF(OR(WEEKDAY(A2,3)=5,WEEKDAY(A2,3)=6),"土日","平日")

どのリターンタイプを使うかによって、土日を示す数値が変わる点に注意してください。一般的には、リターンタイプ1(日曜日=1)が最も直感的で理解しやすいため、推奨されます。

応用:土日祝日判定の実現

WEEKDAY関数とIF関数を組み合わせることで、土日だけでなく、祝日も考慮した判定を行うことも可能です。ただし、祝日判定には、祝日リストを別途用意する必要があります。ここでは、祝日リストがD列に入力されていると仮定し、土日祝日を判定する例を示します。

まず、祝日リストを準備します。例えば、D2セルからD10セルにかけて、各祝日の日付を入力しておきます。そして、IF関数、WEEKDAY関数、COUNTIF関数などを組み合わせて、土日祝日を判定する数式を作成します。

以下の数式は、A2の日付が土曜日または日曜日であるか、あるいはD列の祝日リストに含まれる場合に「土日祝」と表示し、それ以外の場合は「平日」と表示します。

=IF(OR(WEEKDAY(A2,1)=1,WEEKDAY(A2,1)=7,COUNTIF($D$2:$D$10,A2)>0),"土日祝","平日")

この数式をC2セルに入力し、下にコピーすることで、土日祝日を自動で識別できます。祝日リストの範囲($D$2:$D$10)は絶対参照にしておくことで、数式をコピーしても範囲がずれないようにします。

この応用テクニックを使えば、より実用的な集計や管理が可能になります。例えば、プロジェクトのスケジュール管理で、土日祝日を除いた稼働日のみを計算する際などに役立ちます。

よくある質問とトラブルシューティング

WEEKDAY関数や土日識別を行う際に、よく遭遇する問題とその解決策をいくつか紹介します。

表示される数値が意図と異なる

原因: リターンタイプ引数を指定していない、または間違ったリターンタイプを指定している可能性が高いです。デフォルトではリターンタイプ「1」が適用され、日曜日が「1」となります。月曜日を「1」として数えたい場合は、リターンタイプ「2」などを指定する必要があります。

対処法: WEEKDAY関数の第二引数「リターンタイプ」に、目的とする曜日番号の開始値を指定してください。例えば、月曜日を「1」としたい場合は「=WEEKDAY(A2,2)」のように設定します。Excelのヘルプなどで、各リターンタイプがどの曜日をどの数値として返すかを確認すると良いでしょう。

IF関数で土日判定がうまくいかない

原因: WEEKDAY関数の結果とIF関数の条件が一致していない、またはOR関数内の条件指定が間違っていることが考えられます。例えば、リターンタイプ「1」を使っているのに、IF関数の条件で「WEEKDAY(A2)=6」のように指定している場合、金曜日(リターンタイプ1では6)が土曜日(7)と判定されてしまう可能性があります。

対処法: 使用しているWEEKDAY関数のリターンタイプを確認し、それに合わせてIF関数内の条件(数値)を正しく指定してください。土日を判定する場合、リターンタイプ「1」なら「1」と「7」、リターンタイプ「2」なら「6」と「7」のように、土日を示す数値を正確にOR関数で指定します。数式を一つずつ検証(数式バーの「数式の評価」機能など)すると、どこで問題が起きているか特定しやすくなります。

日付データが正しく認識されない

原因: セルに入力されている値が、Excelが日付として認識できる形式になっていない場合があります。単なる文字列として入力されていると、WEEKDAY関数でエラー(例: #VALUE!)が発生することがあります。

対処法: 対象のセルを選択し、Excelのリボンメニューから「ホーム」タブの「表示形式」で「日付」を選択し直してみてください。または、セルの書式設定で「表示形式」を「日付」に変更します。もし、セルの先頭にアポストロフィ(‘)が付いている場合は、それは文字列として入力されていることを示しているので、アポストロフィを削除して再度日付を入力してください。

WEEKDAY関数と他の曜日関連関数の比較

Excelには、曜日に関連する関数が他にもいくつか存在します。ここでは、WEEKDAY関数と、よく比較されるTEXT関数、CHOOSE関数との違いを解説します。

項目 WEEKDAY関数 TEXT関数 CHOOSE関数
主な機能 日付を曜日番号(数値)で返す 日付を指定した書式(曜日名など)の文字列で返す インデックス番号に基づいてリストから値を選択する
戻り値の形式 数値 文字列 指定した値(文字列、数値など)
曜日判定の直接性 間接的(数値判定が必要) 直接的(曜日名が返る) 間接的(WEEKDAY関数と組み合わせる)
土日識別の容易さ IF関数と組み合わせることで容易 直接曜日名で判定可能(例: IF(TEXT(A2,”aaaa”)=”土曜日”,…)) WEEKDAY関数と組み合わせることで容易
数式例(曜日名表示) =TEXT(A2,”aaaa”) (※WEEKDAY関数ではない) =TEXT(A2,”aaaa”) =CHOOSE(WEEKDAY(A2,2),”月”,”火”,”水”,”木”,”金”,”土”,”日”)
使い分けのポイント 曜日番号を基に条件分岐させたい場合。集計処理に便利。 直接曜日名を表示させたい場合。見た目の分かりやすさを重視する場合。 WEEKDAY関数と組み合わせて、曜日番号を具体的な文字列(曜日名や「土日」など)に変換したい場合。

TEXT関数は、日付を指定した書式(例: “aaaa”で曜日名、”ddd”で曜日の略称)の文字列として直接返してくれるため、見た目で曜日を把握したい場合に便利です。一方、WEEKDAY関数は曜日を数値で返すため、その数値を元にIF関数などで条件分岐させて集計や処理を行いたい場合に強力な力を発揮します。CHOOSE関数は、WEEKDAY関数で得られた数値(インデックス)を基に、あらかじめ用意した曜日名のリストから適切なものを選択させる際に役立ちます。これらの関数を理解し、目的に応じて使い分けることで、Excelでの日付・曜日関連の作業効率が格段に向上します。

この記事では、ExcelのWEEKDAY関数を使って曜日を判定し、さらにIF関数と組み合わせることで土日を自動識別する方法を解説しました。WEEKDAY関数のリターンタイプを理解し、IF関数やOR関数と組み合わせることで、土曜日・日曜日を正確に識別できるようになります。さらに、祝日リストと組み合わせることで、より実用的な判定も可能です。これらの知識を活用すれば、週単位の集計や、稼働日のみを対象としたデータ分析が格段に容易になります。まずは、ご自身のデータでWEEKDAY関数を試してみてください。次のステップとして、CHOOSE関数やTEXT関数と組み合わせた曜日名表示にも挑戦してみると、さらにExcelでの日付操作の幅が広がるでしょう。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】