目次
このチュートリアルでは、ExcelでWEEKDAY式を使用して、日付を曜日名に変換する方法、フィルタリング、ハイライト、週末や勤務日のカウントなどを説明します。
Excelには日付を扱う様々な関数があります。 特に曜日関数(WEEKDAY)は、プロジェクトの期間を決定し、週末を自動的に合計から除外するなど、計画やスケジュール管理に役立ちます。 それでは、一つずつ例を挙げながら、Excelで日付に関する様々なタスクにどのように対処できるかを見ていきましょう。
WEEKDAY - 曜日を表すExcel関数
ExcelのWEEKDAY関数は、指定された日付から曜日を返すために使用します。
この結果は、デフォルトでは1(日曜日)から7(土曜日)までの整数になります。 ビジネスロジックで別の列挙が必要な場合は、他の曜日からカウントを開始するように数式を構成することができます。
WEEKDAY関数は、Excel 365から2000までのすべてのバージョンで利用可能です。
WEEKDAY関数のシンタックスは以下のとおりです。
WEEKDAY(シリアル番号、[return_type])どこで
シリアル番号 (必須) -曜日番号に変換したい日付。 日付を表す通し番号、Excelが理解できる形式のテキスト文字列、日付を含むセルへの参照、またはDATE関数を使用して指定することが可能です。
リターンタイプ (オプション) - 最初の日として使用する曜日を決定します。 省略された場合、デフォルトは日-土の週です。
対応機種一覧はこちら return_type の値です。
リターンタイプ | 返却数 |
---|---|
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日(土)まで |
注 return_type 値11~17はExcel 2010で導入されたため、それ以前のバージョンでは使用できません。
Excelの基本的なWEEKDAYの計算式
手始めに、最もシンプルな形で、日付から日数を求めるWEEKDAY式の使い方をみてみましょう。
例えば、デフォルトの日曜日から土曜日の週をC4で日付から曜日を取得する場合、計算式は次のようになります。
=WEEKDAY(C4)
日付を表す通し番号(DATEVALUE関数で持ってきたものなど)があれば、その番号を直接数式に入力することができます。
=平日(45658)
また、日付を引用符で囲んだテキスト文字列として直接数式に入力することもできます。 ただし、Excelが期待し、解釈できる日付形式を使用するようにしてください。
=weekday("1/1/2025")です。
または、DATE関数を使って100%信頼できる方法でソースの日付を提供します。
=weekday(date(2025, 1,1))
デフォルトの日-土以外の曜日マッピングを使用するには、第2引数に適切な数値を入力します。 例えば、月曜日から曜日を数え始めるには、以下の式になります。
=weekday(c4, 2)
下の画像では、すべての数式が2025年1月1日に対応する曜日を返していますが、これはExcel内部では45658という数値として保存されています。 第2引数に設定した値によって、数式の出力結果は異なります。
一見、WEEKDAY関数が返す数値は実用的な意味がほとんどないように思えますが、別の角度から見て、現実的な課題を解決する公式をいくつか紹介しましょう。
Excelの日付を曜日名に変換する方法
ExcelのWEEKDAY関数は、曜日を数値で返すように設計されています。 曜日を数値で表すには、TEXT関数を使用します。
を得るために 全日制名 の場合は、"dddd "フォーマットコードを使用してください。
TEXT(週日( 年月日 ), "dddd")戻るには 短縮日名 の場合、フォーマットコードは "ddd "となります。
TEXT(週日( 年月日 ), "ddd")例えば、A3の日付を曜日名に変換する場合、計算式は次のようになります。
=TEXT(WEEKDAY(A3),「dddd」)
または
=TEXT(WEEKDAY(A3),「ddd」)
また、WEEKDAYとCHOOSE関数を併用する方法も考えられます。
例えば、A3の日付から曜日名の略称を得るには、次のような式になる。
=CHOOSE(WEEKDAY(A3), "日", "月", "火", "水", "木", "金", "土")
ここで,WEEKDAYは1(日)から7(土)までの通し番号を返し,CHOOSEはその中から対応する値を選ぶ。 A3(水)の日付は4に対応するので,CHOOSEはリストの4番目の値である「水」と出力する。
CHOOSE式は設定がやや面倒ですが、曜日名を自由に出力できる柔軟性があります。 上記の例では省略形の曜日名を表示していますが、フルネームや独自の省略形、異なる言語での曜日名を配信することも可能です。
ヒント: 日付を曜日名に変換するもう一つの簡単な方法は、カスタム日付フォーマットを適用することです。 例えば、コードフォーマット「dddd, mmmm d, yyyy」を適用すると、日付は「. 2025年1月3日(金) 「と表示され、"dddd "と表示された場合は" 金曜日 ".
平日と週末を検索してフィルタリングするExcel WEEKDAYの公式
長い日付のリストを扱う場合、どれが営業日でどれが週末なのかを知りたい場合があります。
への ウィークエンドとウィークデーを識別する をExcelで作成し、WEEKDAY関数をネストしたIF文を作成します。 例えば、以下のような感じです。
=IF(WEEKDAY(A3, 2)<6, "平日", "土日")
この数式はセルA3にコピーされ、必要な数だけセル全体にコピーされます。
WEEKDAYの計算式では return_type を2に設定すると、月曜日を1日目とする月-日の週に対応します。 したがって、平日(月~金)の数が6より少ない場合は「平日」、それ以外の場合は「週末」が返される計算式になります。
への フィルターウィークエンド・ワークデー を選択し、データセットにExcelのフィルタを適用します( データ tab> フィルター をクリックし、「週末」または「平日」のいずれかを選択します。
下のスクリーンショットでは、平日をフィルターで除外しているため、週末だけが表示されています。
もし、あなたの組織のある地域オフィスが土曜日と日曜日以外の休息日を持つ別のスケジュールで働く場合、別のものを指定することで簡単にWEEKDAY式をあなたのニーズに合わせて調整することができます。 return_type .
例えば、治療するために 土曜日 と 月曜日 を週末に設定します。 return_type を12にすると、「火曜日(1)~月曜日(7)」の週型になります。
=IF(WEEKDAY(A2, 12)<6, "平日", "土日")
エクセルで週末や平日を強調表示する方法
ワークシートで週末と平日を一目で見分けるには、自動的に異なる色で陰影をつけることができます。 これには、前の例で説明した平日/週末の数式とExcelの条件付き書式を使用します。 条件が暗示されているので、IFラッパーなしのコアWEEKDAY関数だけが必要なのです。
への ハイライト・ウィークエンド (土・日)です。
=WEEKDAY($A2, 2)<6
への 強調表示作業日 (月~金)です。
=WEEKDAY($A2, 2)>5
ここで、A2 は選択された範囲の左上のセルである。
条件付き書式ルールを設定する手順は、以下の通りです。
- 日付のリスト(ここではA2:A15)を選択します。
- について ホーム タブで スタイル グループをクリックします。 条件付き書式設定 > 新ルール .
- での 新しい書式ルール ダイアログボックスで 数式を使用して、どのセルをフォーマットするかを決定する .
- での この式が適用される値のフォーマット が true の場合、上記の土日用または平日用の計算式を入力します。
- をクリックします。 フォーマット ボタンを押し、希望の形式を選択する。
- クリック よっしゃー を2回押すと、変更が保存され、ダイアログウィンドウが閉じます。
各手順の詳細については、「数式を使った条件付き書式の設定方法」をご覧ください。
なかなかいい感じに仕上がったのではないでしょうか?
Excelで平日と週末をカウントする方法
日付のリストに含まれる平日や週末の数を取得するには、WEEKDAY関数とSUMを組み合わせて使用します。 たとえば、次のようになります。
への ウィークエンドを数える であり、D3 の式は
=SUM(--(WEEKDAY(A3:A20, 2)>5))
への 平日を数える の場合、D4 の式はこのような形になる。
=SUM(--(WEEKDAY(A3:A20, 2)<6))
配列をネイティブに扱うExcel 365やExcel 2021では、以下のスクリーンショットのように通常の数式として動作します。 Excel 2019以前では、Ctrl + Shift + Enterキーを押して配列数式にします。
これらの公式の仕組み
を持つWEEKDAY関数。 return_type 2 に設定すると、A3:A20 の範囲の各日付について、1 (Mon) から 7 (Sun) までの日数を返します。 論理式は、返された数値が 5 より大きいかどうか(週末の場合)、または 6 より小さいかどうかをチェックします。 この処理の結果は、真と偽の値の配列になります。
二重否定(--)で論理値を1と0に強制し、SUM関数で加算する。 1(TRUE)がカウントする日、0(FALSE)が無視する日を表すとすると、期待通りの結果が得られることになる。
ヒント:計算する場合 間の平日 の場合、NETWORKDAYS または NETWORKDAYS.INTL 関数を使用してください。
平日であれば、土日であれば。
最後に、もう少し具体的なケースとして、曜日を判断して、土日なら何か、平日なら別のことをする、という方法を説明します。
IF(WEEKDAY()の場合 セル , 2)>5, if_weekend_then , if_weekday_then )例えば、休日出勤した従業員への支給額を計算する場合、平日と休日で異なる支給率を適用する必要があります。 これは、次のIF文を使って行うことができます。
- での 論理テスト 引数で指定された日が平日か週末かをチェックする WEEKDAY 関数をネストしてください。
- での value_if_true の引数で、労働時間数に週末料金(G4)を乗じる。
- での value_if_false 引数で、労働時間数に労働日数率を乗じる(G3)。
D3での完全な式はこのような形になります。
=IF(WEEKDAY(B3, 2)>5, C3*$G$4, C3*$G$3)
数式を以下のセルに正しくコピーするには、レートセルのアドレスを必ず$記号で固定してください($G$4のように)。
WEEKDAY機能が動作しない
一般に、WEEKDAY式が返すエラーには2つの共通点があります。
のどちらかであれば、#VALUE!エラーが発生します。
- シリアル番号 または return_type は非数値である。
- シリアル番号 がサポートされている日付範囲(1900~9999)外である。
#NUM!エラーが発生した場合 return_type が許容範囲外(1~3または11~17)である。
以上、ExcelのWEEKDAY関数を使って曜日を操作する方法でした。 次回は、週、月、年といった大きな時間単位を操作するExcel関数をご紹介します。 どうぞご期待ください。
練習用ワークブック(ダウンロード
ExcelでWEEKDAYの公式 - 例(.xlsxファイル)