Excelで年間カレンダーを作成する方法|初心者向け4ステップ解説
先々の予定をしっかり立てたい方や、スケジュールが忙しい方にとって、Excelのカレンダーは非常に便利なツールです。この記事では、Excelで年間カレンダーを作成する手順を、詳しい解説とともにステップごとにご紹介します。ここで作成するカレンダーの最大の特徴は、動的かつインタラクティブであるという点です。つまり、年の数値を変更するだけで、カレンダーが自動的に更新されます。さらに、ExcelのVBAを使って月間カレンダーを作成する方法についても解説します。
練習用ワークブックは、以下のリンクからダウンロードできます。
Excelで年間カレンダーを作成する4つのステップ
チュートリアルの詳細に入る前に、まず完成形のイメージをご覧ください。ここでは年間カレンダーを作成しており、土曜日と日曜日(週末)は薄いオレンジ色で、祝日は濃いオレンジ色で表示されます。


この記事ではMicrosoft Excel 365を使用していますが、お使いの環境に合わせて他のバージョンでも問題なく作業できます。
📌 ステップ01:基本のレイアウトを作成する
- 最初のステップでは、12か月分を3列×4行に配置して、カレンダーの枠組みを作成します。
- 次に、1週間の7曜日を入力し、週末(この場合は土曜日と日曜日)を目立たせるために強調表示します。

関連記事: Excelで週間カレンダーを作成する方法(3つの方法)
📌 ステップ02:月名を入力する
- 次に、セルB4を選択し、数字の1を入力して、キーボードのCtrl + 1キーを押します。

すると、「セルの書式設定」ダイアログボックスが開きます。
- まず「表示形式」タブに移動し、「ユーザー定義」を選択します。「種類」欄に"January"(ダブルクォーテーションで囲む)と入力し、最後に「フォント」タブへ移動します。

- 続いて、フォントスタイルで太字斜体を選択し、任意の文字色(ここでは紫)を指定して、「OK」ボタンをクリックします。

- 次に、セル範囲B4:H4を選択し、Ctrl + 1キーを押して「セルの書式設定」ウィンドウを開きます。
- 「配置」タブに進み、「横位置」セクションで「選択範囲内で中央」を選択して、「OK」ボタンを押します。

これで、下の画像のように月名January(1月)が表示されるはずです。

- 同様の手順を他の月にも繰り返すと、以下のような出力になります。


関連記事: テンプレートを使わずにExcelでカレンダーを作成する方法(2つの例)
📌 ステップ03:Excel関数で動的カレンダーを作る
- 3番目のステップとして、セルB6に以下の数式を入力します。
=IF(MONTH(DATE($B$2,$B$4,1)+SEQUENCE(6,7)-WEEKDAY(DATE($B$2,$B$4,1),2))=$B$4,DATE($B$2,$B$4,1)+SEQUENCE(6,7)-WEEKDAY(DATE($B$2,$B$4,1),2),"")
ここで、セルB2は2022年、セルB4は1月をそれぞれ参照しています。
📃 注意: SEQUENCE関数はExcel 365、Excel 2021、およびExcel for the webでのみ使用できます。互換性のあるバージョンを使用していることを確認してください。

- Enterキーを押すと、数式によって1月の日付がすべて自動的に入力されます。
📃 注意: Ctrl + 1キーで「セルの書式設定」ウィンドウを開き、日付の表示形式を「d」(日のみ)に変更してください。

最終的な結果は、下の画像のようになります。


📌 ステップ04:カレンダーに祝日を表示する
- 4番目で最後のステップでは、新しいシートに下図のように祝日のリストを作成します。

- 次に、セル範囲B6:H11を選択し、「条件付き書式」ドロップダウンから「新しいルール」を選択します。

すぐに「新しい書式ルール」ウィザードが表示されます。
- 「数式を使用して、書式設定するセルを決定」オプションを選択します。
- その後、「ルールの内容」欄に以下の数式を入力します。
=ISNUMBER(VLOOKUP(B6,Holidays!$C:$C,1,0))
ここで、セルB6は1月の月曜日を指し、Holidays!$C:$CはHolidaysシート内の日付を表しています。
数式の解説:
- VLOOKUP(B6,Holidays!$C:$C,1,0) → VLOOKUP関数は、テーブルの左端の列で値を検索し、指定した列から同じ行の値を返します。ここでは、B6(検索値引数)がHolidays!$C:$C(範囲引数)の中から照合されます。1(列番号引数)は検索値の列番号を示し、最後の0(検索方法引数)は検索値との完全一致を意味します。
- 出力 → #N/A
- ISNUMBER(VLOOKUP(B6,Holidays!$C:$C,1,0)) → 上記の結果を受けて
- ISNUMBER(#N/A) → ISNUMBER関数は、値が数値であるかどうかを判定し、TRUEまたはFALSEを返します。ここでは#N/Aが値引数であり、数値ではないため関数はFALSEを返します。
- 出力 → FALSE

これにより、1月1日の祝日が濃いオレンジ色で強調表示されます。

同じ要領で他の月にも同じ処理を適用すると、以下のような出力になります。


VBAで月間カレンダーを作成する方法
月間カレンダーを作りたい場合はどうすればよいのでしょうか? 次の方法で解決できます! ここではVBAコードを使って作業を自動化します。それでは実際に見てみましょう。
📌 手順:
- まず、「開発」タブに移動し、「Visual Basic」ボタンをクリックします。

新しいウィンドウでVisual Basic Editorが開きます。
- 次のステップでは、「挿入」タブから「標準モジュール」を選択します。

参考までに、以下のコードをコピーしてウィンドウに貼り付けてください。
Sub CalendarMaker()
'This code was taken from extendoffice.com
ActiveSheet.Protect DrawingObjects:=False, Contents:=False, _
Scenarios:=False
Application.ScreenUpdating = False
On Error GoTo MyErrorTrap
Range("a1:g14").Clear
MyInput = InputBox("Type in Month and year for Calendar ")
If MyInput = "" Then Exit Sub
StartDay = DateValue(MyInput)
If Day(StartDay) <> 1 Then
StartDay = DateValue(Month(StartDay) & "/1/" & _
Year(StartDay))
End If
Range("a1").NumberFormat = "mmmm yyyy"
With Range("a1:g1")
.HorizontalAlignment = xlCenterAcrossSelection
.VerticalAlignment = xlCenter
.Font.Size = 18
.Font.Bold = True
.RowHeight = 35
End With
With Range("a2:g2")
.ColumnWidth = 11
.VerticalAlignment = xlCenter
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Orientation = xlHorizontal
.Font.Size = 12
.Font.Bold = True
.RowHeight = 20
End With
Range("a2") = "Sunday"
Range("b2") = "Monday"
Range("c2") = "Tuesday"
Range("d2") = "Wednesday"
Range("e2") = "Thursday"
Range("f2") = "Friday"
Range("g2") = "Saturday"
With Range("a3:g8")
.HorizontalAlignment = xlRight
.VerticalAlignment = xlTop
.Font.Size = 18
.Font.Bold = True
.RowHeight = 21
End With
Range("a1").Value = Application.Text(MyInput, "mmmm yyyy")
DayofWeek = Weekday(StartDay)
CurYear = Year(StartDay)
CurMonth = Month(StartDay)
FinalDay = DateSerial(CurYear, CurMonth + 1, 1)
Select Case DayofWeek
Case 1
Range("a3").Value = 1
Case 2
Range("b3").Value = 1
Case 3
Range("c3").Value = 1
Case 4
Range("d3").Value = 1
Case 5
Range("e3").Value = 1
Case 6
Range("f3").Value = 1
Case 7
Range("g3").Value = 1
End Select
For Each cell In Range("a3:g8")
RowCell = cell.Row
ColCell = cell.Column
If cell.Column = 1 And cell.Row = 3 Then
ElseIf cell.Column <> 1 Then
If cell.Offset(0, -1).Value >= 1 Then
cell.Value = cell.Offset(0, -1).Value + 1
If cell.Value > (FinalDay - StartDay) Then
cell.Value = ""
Exit For
End If
End If
ElseIf cell.Row > 3 And cell.Column = 1 Then
cell.Value = cell.Offset(-1, 6).Value + 1
If cell.Value > (FinalDay - StartDay) Then
cell.Value = ""
Exit For
End If
End If
Next
For x = 0 To 5
Range("A4").Offset(x * 2, 0).EntireRow.Insert
With Range("A4:G4").Offset(x * 2, 0)
.RowHeight = 65
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
.WrapText = True
.Font.Size = 10
.Font.Bold = False
.Locked = False
End With
With Range("A3").Offset(x * 2, 0).Resize(2, _
7).Borders(xlLeft)
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Range("A3").Offset(x * 2, 0).Resize(2, _
7).Borders(xlRight)
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
Range("A3").Offset(x * 2, 0).Resize(2, 7).BorderAround _
Weight:=xlThick, ColorIndex:=xlAutomatic
Next
If Range("A13").Value = "" Then Range("A13").Offset(0, 0) _
.Resize(2, 8).EntireRow.Delete
ActiveWindow.DisplayGridlines = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _
Scenarios:=True
ActiveWindow.WindowState = xlMaximized
ActiveWindow.ScrollRow = 1
Application.ScreenUpdating = True
Exit Sub
MyErrorTrap:
MsgBox "You may not have entered your Month and Year correctly." _
& Chr(13) & "Spell the Month correctly" _
& " (or use 3 letter abbreviation)" _
& Chr(13) & "and 4 digits for the Year"
MyInput = InputBox("Type in Month and year for Calendar")
If MyInput = "" Then Exit Sub
Resume
End Sub

- その後、VBAウィンドウを閉じ、「マクロ」ボタンをクリックします。
「マクロ」ダイアログボックスが開きます。
- 続いて、CalendarMakerマクロを選択し、「実行」ボタンを押します。

するとインプットボックスが開くので、下図のように月名と年を入力します。

その結果、以下のような出力が得られます。

まとめ
この記事が、Excelで年間カレンダーを作成する方法を理解する一助となれば幸いです。ご不明な点がある場合は、下のコメント欄でお気軽にお尋ねください。また、このような記事をもっと読みたい方は、ワンストップのExcelソリューション提供サイトExcelDemyもぜひご覧ください。
関連記事
- Excelで白紙のカレンダーを作成する方法(無料テンプレートダウンロード付き)
-
Excelで図書館データベースを作成する方法|初心者向け簡単ステップ解説
Microsoft Excelは会計処理やデータ管理、予測分析などに使われることが多いソフトウェアですが、実は優れたデータベースソフトとしても活用できます。Excelはデータの入力・管理ツールとして非常に強力で、内蔵された機能を組み合わせれば、あらゆる種類のデータベースを簡単に構築できます。この記事では、Excelで図書館データベースを作成する方法と、フォームを使ってデータを入力する手順を詳しく解説します。 図書館データベースとは? データベースとは、電子的に保存され、必要に応じてアクセスできるように整理されたデータの集合体を指します。データの保存先は、ローカル環境でもオンラインのクラウド上
-
ExcelでXMLマッピングを作成する方法|初心者向け3ステップ完全ガイド
この記事では、ExcelでXMLマッピングを作成するための簡単な手順を解説します。ファイルを異なるプログラムやOSで利用できるようにするには、ファイル形式の変換が必要になることがよくあります。用途に応じて、XMLとXLSXはAndroidやWindows環境で最も広く使われているファイル形式の2つです。そのため、XMLからExcelへ、あるいはExcelからXMLへの変換は、現代のビジネスシーンにおいて非常に重要なスキルとなっています。 練習用ワークブックとXML構造ファイルは、記事内のリンクからダウンロードできます。 ExcelでXMLマッピングを作成する手順 ExcelでXMLマッピングを