Excelで曜日と祝日を自動で入れる方法(式・条件付き書式・祝日一覧つき)
曜日は日付の表示形式かTEXT関数で、祝日は祝日一覧とCOUNTIFで自動入力できます。
A列に日付、B列に曜日、C列に祝日名を置く例で、順に作っていきます。日本語版Excelを想定した手順です。
1. 曜日を出す2つの方法
A2に日付として 2027/1/1 を入力します。曜日だけを別の列に出すならB2に次の式を入れます。
=TEXT(A2,"aaa") 「金」と表示されます。「金曜日」のように長く出す場合は、書式を aaaa に変えます。
=TEXT(A2,"aaaa") 日付と曜日を同じセルに出すなら、A2を選び、右クリック →「セルの書式設定」→「表示形式」→「ユーザー定義」の「種類」に次を入力します。
m/d(aaa) 見た目は「1/1(金)」、値は日付のままです。日付順の並べ替えや日数計算にそのまま使えるのは、この表示形式の方法です。TEXTの結果は曜日の文字列なので、計算には元のA列を参照してください。
2. 月の初日から月末まで日付を並べる
G2に「年」、H2に 2027、G3に「月」、H3に 1 を入力します。A1は「日付」、B1は「曜日」、C1は「祝日名」とします。A2の値を次の式に置き換えます。
=DATE($H$2,$H$3,1) =DATE(年,月,1) という形で月の初日を作っています。A3に次を入れて下へコピーすれば、1日ずつ増やせます。
=A2+1 ただし、そのままでは翌月も続きます。月末で止めるにはA3を次の式に変え、A32までコピーします。A2はDATEの式のままです。
=IF(A2="","",IF(MONTH(A2+1)=MONTH($A$2),A2+1,"")) A2:A32には日付の表示形式 m/d を設定します。B2は空行で曜日を出さない式にして、B32までコピーします。
=IF(A2="","",TEXT(A2,"aaa")) H2・H3を変えると、うるう年の2月を含めて1か月分に切り替わります。サンプルの年の入力範囲は祝日表に合わせて1949〜2080年です。
3. 土日に条件付き書式で色を付ける
- A2を起点に A2:C32 を選択します。
- 「ホーム」→「条件付き書式」→「新しいルール」→「数式を使用して、書式設定するセルを決定」を選びます。
- 日曜は次の式を入れ、「書式」で赤い文字や薄い赤の塗りつぶしを指定します。
=WEEKDAY($A2)=1 同じ手順で、土曜の青い書式を追加します。
=WEEKDAY($A2)=7 種類を省略したWEEKDAYは日曜が1、土曜が7です。$A2 はA列だけ固定し、行は適用先に合わせて変わります。月末後の空行を塗らないように、実際のルールにはISNUMBERも加えます。
=AND(ISNUMBER($A2),WEEKDAY($A2)=1) =AND(ISNUMBER($A2),WEEKDAY($A2)=7) 4. 祝日一覧を貼り付けて、色と祝日名を出す
Excelは日本の祝日を自動では判断しません。当サイトの祝日一覧CSV(1949〜2080年・内閣府の公表に準拠)を別シートに取り込むと、手入力せずに判定できます。
全年の CSV をダウンロード全年CSVはA列「日付」、B列「祝日名」、C列「種別」です。日付は 2027/1/1 の形式。UTF-8(BOM付き)で、1行目に見出しがあります。
年別の 2027年の祝日CSV は「日付・曜日・祝日名・種別」の4列です。この手順で使う場合は、曜日列を削除し、A列を日付・B列を祝日名にそろえてください。
- CSVをExcelで開き、見出しを含むA〜C列をコピーします。カレンダーのブックに新しいシートを作り、名前を 祝日 にしてA1へ貼り付けます。
- 空いているセルで
=ISNUMBER(祝日!A2)がTRUEになることを確認します。FALSEなら、祝日シートのA列を選び、「データ」→「区切り位置」で最後の画面まで進み、列のデータ形式を「日付(YMD)」にして完了します。 - カレンダーに戻り、A2:C32に祝日用の条件付き書式を追加します。判定の基本形は次の式です。
=COUNTIF(祝日!$A:$A,$A2)>0 月末後の空行を除く場合は、次を使います。書式は赤にし、「ルールの管理」で土日のルールより上へ移動して「条件を満たす場合は停止」を選ぶと、土曜と重なる祝日も赤になります。
=AND(ISNUMBER($A2),COUNTIF(祝日!$A:$A,$A2)>0) 別シートの直接参照を受け付けない環境では、「数式」→「名前の管理」でブック全体の名前 祝日一覧 を作り、参照範囲を =祝日!$A:$A に設定してから、次を使います。
=AND(ISNUMBER($A2),COUNTIF(祝日一覧,$A2)>0) C2に祝日名を出す式は次です。日付をA列で探し、一致した行のB列を表示します。FALSEは完全一致の指定です。
=IFERROR(VLOOKUP($A2,祝日!$A:$B,2,FALSE),"") 月末後の空行も含むC32までコピーする場合は、サンプルと同じく次の形にします。
=IF(A2="","",IFERROR(VLOOKUP($A2,祝日!$A:$B,2,FALSE),"")) 2027年1月1日なら「元日」、1月11日なら「成人の日」が出れば設定できています。会社独自の休業日はこの祝日一覧には含まれません。
5. 祝日を除いて営業日を計算する
H5に開始日 =A2、H6に営業日数 5 を入れます。=WORKDAY(開始日,日数,祝日!$A$2:$A$3000) は、土日と一覧の祝日を除いた日付を返します。祝日の範囲は見出し行を含めず2行目から指定します(見出しの文字が入ると #VALUE! になります)。H7に次を入力し、セルを日付表示にします。
=WORKDAY(H5,H6,祝日!$A$2:$A$3000) 開始日を数えず、その翌日以降の5営業日後です。2027年1月1日を開始日にすると1月8日になります。
=NETWORKDAYS(開始日,終了日,祝日!$A$2:$A$3000) は期間内の営業日数です。開始日・終了日も営業日なら含みます。H8に次を入れると、選んだ月の月末までを数えます(2027年1月は19日)。H8は「標準」または数値表示にします。
=NETWORKDAYS(A2,DATE(H2,H3+1,0),祝日!$A$2:$A$3000) 土日以外を休みにしたいときは WORKDAY.INTL の第3引数で週末を指定します。日曜だけ休む例は11です。H9に次を入力し、日付表示にします。
=WORKDAY.INTL(H5,H6,11,祝日!$A$2:$A$3000) 会社の休業日や12月29〜31日・1月2〜3日も除きたい場合は、その日付を祝日シートのA列に追加してください。祝日と同じく日付の値で入れます。
6. Google スプレッドシートでは曜日の書式を変える
Google スプレッドシートのTEXT関数は、曜日の省略名が ddd、正式名が dddd です。Excelの aaa・aaaa をそのまま使わず、B2の式を次のようにします。
=TEXT(A2,"ddd") =TEXT(A2,"dddd") 参考:Google公式ヘルプ:TEXTの対応書式。このサンプルはExcel用です。Google スプレッドシートへの取り込み後の見た目や条件付き書式の再現は確認していません。
数式入りサンプルをダウンロード
「カレンダー」と「祝日」の2シート、マクロなしのxlsxです。H2の年とH3の月を変えると、日付・曜日・祝日名と土日祝の色が変わります。A列は日付の値、B列はTEXTの結果、C列は祝日名です。
曜日・祝日の自動入力サンプル(Excel)祝日シートには1949〜2080年の日付・祝日名が入っています。サンプルは2027年1月から始まり、H7〜H9では営業日の計算を試せます。CSVを別途取り込む必要はありません。
曜日・祝日の自動入力でよくある質問
曜日の表示が変わらないときは?
A2が文字列ではなく日付になっているか、=ISNUMBER(A2)がTRUEになるか確認します。TEXT関数の結果は文字列なので、日付の計算には元のA列を使います。
祝日に色が付かないときは?
祝日シートのA列が日付、B列が祝日名になっているか確認します。条件付き書式の適用先はA2:C32、式の先頭行は$A2にそろえます。
将来の祝日も確定していますか?
公表範囲は内閣府の祝日一覧に準拠しています。将来分は現行制度に基づく計算値で、法改正や特例、春分・秋分の日の公表によって変わる場合があります。
7. 作るのが面倒なら完成品を使う
年を入れ替えて使うなら祝日入りの万年カレンダー、印刷や予定の記入が目的なら年別の完成版を選べます。