Office
 Computer >> コンピューター >  >> ソフトウェア >> Office

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

本チュートリアルでは、テンプレートを使用せずにExcelでカレンダーを作成する方法を解説します。日々の業務やプロジェクトには締め切りがつきものであり、自分専用のカレンダーを管理することは非常に重要です。カレンダーがあれば、作業の期限を見逃す心配が減ります。さらに、自作のExcelカレンダーは自由にカスタマイズできるため、既存のテンプレートよりも使い勝手が大きく向上します。ここでは、テンプレートに頼らずにカレンダーを作成する具体的な手順を詳しく見ていきましょう。

練習用ワークブックはこちらからダウンロードできます。

テンプレートなしでExcelカレンダーを作成する2つの簡単な例

ここでは、2つの例を使ってテンプレートなしでExcelカレンダーを作成します。手順に正しく従えば、誰でも自力でカレンダーを作成できるようになります。それでは順番に見ていきましょう。

1. Excelで月間カレンダーを作成する

まずは、テンプレートを使用せずに月間カレンダーを作成する方法です。以下の手順で簡単に作成できます。

手順:

  • まず、Alt + F11キーを押してVBAエディター(Visual Basic Editor)を開きます。
  • 次に、挿入 > 標準モジュールを選択します。

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

  • その後、コードウィンドウに以下のコードを入力します。
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

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

  • 次に、カレンダーのダイアログボックスに希望する月と年を入力し、OKを押します。

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

  • 最後に、RUN(F5)ボタンを押すと、目的の結果が表示されます。

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

関連記事: Excelで月間カレンダーを作成する3つの効果的な方法

2. Excelで年間カレンダーを作成する

次に、以下の手順に従って年間カレンダーを作成します。

手順:

  • まず、下の画像のようにデータセットを準備します。

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

  • 次に、セルB8に以下の数式を入力します。
=IF(MONTH(DATE($B$4,$B$6,1)+SEQUENCE(6,7)-WEEKDAY(DATE($B$4,$B$6,1),2))=$B$6,DATE($B$4,$B$6,1)+SEQUENCE(6,7)-WEEKDAY(DATE($B$4,$B$6,1),2),"")

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

🔎 数式の仕組み:

  • DATE($B$4,$B$6,1):この部分は、DATE関数を適用する対象となるセルを表しています。
  • WEEKDAY(DATE($B$4,$B$6,1),2):この部分は、日付と曜日の両方を同時に考慮した処理を行います。
  • (DATE($B$4,$B$6,1)+SEQUENCE(6,7)-WEEKDAY(DATE($B$4,$B$6,1),2))=$B$6,DATE($B$4,$B$6,1)+SEQUENCE(6,7)-WEEKDAY(DATE($B$4,$B$6,1),2):この部分は、日付と曜日を考慮しながら、日付を順番に整然と配置することを表しています。
  • IF(MONTH(DATE($B$4,$B$6,1)+SEQUENCE(6,7)-WEEKDAY(DATE($B$4,$B$6,1),2))=$B$6,DATE($B$4,$B$6,1)+SEQUENCE(6,7)-WEEKDAY(DATE($B$4,$B$6,1),2),””):この部分は、月・日付・曜日を含む条件全体を表しており、該当する月の日付のみを表示します。
  • 3番目の手順として、Enterキーを押すと、その月のカレンダーが表示されます。

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

  • 4番目の手順として、この操作を繰り返すことで、下の画像のように一年中すべての月のカレンダーが完成します。

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

  • 5番目の手順として、現在の年間カレンダーに祝日を挿入します。そこで、新しいワークシートに下の画像のような祝日リストを準備します。

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

  • 6番目の手順として、対象のデータ表を選択し、ホーム > 条件付き書式 > 新しいルールを選択します。

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

  • 7番目の手順として、新しい書式ルールダイアログボックスの「ルールの種類を選択してください」で「数式を使用して、書式設定するセルを決定」を選択し、「次の数式を満たす値を書式設定」欄に以下の数式を入力します。その後、プレビューで好みの色を選択してOKを押します。
=ISNUMBER(VLOOKUP(B8,Holidays!$C:$C,1,0))

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

🔎 数式の仕組み:

  • VLOOKUP(B8, Holidays!$C:$C,1,0):VLOOKUP関数は、テーブルの左端の列から値を検索し、指定した列から同じ行の値を返します。ここでは、B8(検索値)Holidays!$C:$C(範囲)の配列と照合されます。次に、1(列番号)は検索値の列番号を表し、最後の0(検索方法)は検索値の完全一致を意味します。
  • ISNUMBER(VLOOKUP(B8, Holidays!$C:$C,1,0)): ISNUMBER関数は、値が数値であるかどうかを判定し、TRUEまたはFALSEを返します。つまり、カレンダー上の日付が祝日リストに存在すればTRUEとなります。
  • 8番目の手順として、Enterキーを押すと、その月のカレンダーに祝日が反映された結果が表示されます。

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

  • 最後に、この手順を繰り返すことで、下の画像のように一年中すべての月に祝日が色分け表示された年間カレンダーが完成します。

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

テンプレート不要!Excelでカレンダーを自作する2つの簡単な方法

関連記事: Excelで年間カレンダーを作成する簡単な手順

まとめ

以上、テンプレートを使用せずにExcelでカレンダーを作成する方法をご紹介しました。これらの方法が皆さんの業務効率化やスケジュール管理に役立てば幸いです。もし他にも便利な作成方法をご存じでしたら、ぜひお聞かせください。ExcelDemyサイトでは、このような実用的な記事を多数公開しています。ご不明な点や問題にお困りの際は、下のコメント欄からお気軽にコメントやご質問をお寄せください。全力で問題解決やご提案への対応に努めます。

関連記事

  • Excelでインタラクティブなカレンダーを作る2つの簡単な方法
  • Excelで空白のカレンダーを作成する(無料テンプレートダウンロード付き)
  • Excelで週間カレンダーを作成する3つの適切な方法

  1. Excelでインタラクティブなカレンダーを簡単に作る2つの方法【月間・年間】

    忙しい日常の中で、カレンダーは欠かせないツールです。部屋には壁掛けカレンダー、スマホや腕時計にはポケットカレンダーがあるかもしれません。しかし、Microsoft Excelでインタラクティブなカレンダーを自作するのはとても楽しく、その仕上がりも満足のいくものになります。インタラクティブなカレンダーなら、月や年を変更するだけで、下のアニメーションのように自動的にカレンダーが切り替わります。この記事では、Excelでインタラクティブなカレンダーを作成する方法を詳しく解説します。 無料のExcelワークブックをダウンロードして、ぜひご自身でも練習してみてください。 Excelでインタラクティブな

  2. Excelで空白のカレンダーを作成する方法|無料テンプレート付きの完全ガイド

    Excelで空白のカレンダーを手軽に作りたいとお考えなら、この記事がぴったりです。本記事では、Excelを使って空白のカレンダーを作成するための手順を、わかりやすい図解つきで段階的にご紹介します。初心者の方でも迷わず作業を進められるよう、各ステップを丁寧に解説していきますので、ぜひ最後までご覧ください。 空白カレンダーのテンプレートをダウンロード まずは、練習用ワークブックを以下からダウンロードできます。自分で一から作るのが面倒な方は、テンプレートを活用してすぐに使い始めましょう。 Excelで空白のカレンダーを作成する手順 ここからは、Windows環境のExcelで空白のカレンダーを作成