【Excel】📅Excelで作る自動更新スケジュール管理カレンダー
目次
- このシステムについて
- システムの構成について
- メイン機能について
- 自動更新スケジュール管理カレンダー作成手順
- Coverシートの設定
- システムの動作の流れ
- カスタマイズ提案
- 表示形式の改良
- 作成時の重要なポイント
- 注意事項とトラブルシューティング
- まとめ
- 配布用_自動更新スケジュール管理カレンダー
このシステムについて
🎯 主要な機能
このExcelカレンダーシステムは、スケジュール管理を劇的に効率化する4つの優れた機能を提供します:
✨ 1. 年月変更だけで自動カレンダー更新
- B2セル(年)とG2セル(月)を変更するだけで、カレンダー全体が瞬時に更新
- 手動で日付を入力する必要が一切なし
- 2025年、2026年…どの年でも対応可能
📋 2. 予定の自動表示
- 別シートに入力した予定データが自動でカレンダーに反映
- 予定の追加・変更・削除をScheduleシートで行うだけで、カレンダーに即座に反映
- 複数の予定がある日は、すべて自動で縦に並んで表示
🎌 3. 祝日の自動色分け
- 祝日リストと照合して該当日を自動で色付け
- 視認性が向上し、祝日を見落とすリスクを軽減
- 祝日データの追加・変更も簡単
👁️ 4. 視認性の向上
- 前月・翌月の日付を薄色表示で区別
- 表示月の日付が明確に識別可能
- カレンダーとしての使いやすさを大幅向上
🏢 適用可能な場面
- 個人のスケジュール管理:日常の予定管理
- チーム・部署の予定共有:会議や作業スケジュールの可視化
- プロジェクト管理:タスクの期日管理
- イベント・催事管理:開催日程の一元管理
📝📅 スケジュールがカレンダーに自動反映 (参考画像)
【スケジュール】
!
【反映された動的カレンダー1月】
!
【反映された動的カレンダー1月】
!
システムの構成について
📁 4つのシート構成
!
🏠 Coverシート
- 役割:システムの入り口となるカバーページ
- 内容:各種目次をクリックすることで希望のシートへジャンプする
!
📅 Calendarシート(メインシート)
- 役割:カレンダー表示と予定表示の中心
- 重要なセル配置:
B2
:年入力(例:2025)G2
:月選択(1-12のプルダウン)B4以降
:日付の自動生成エリアB5以降
:予定の自動表示エリア
※視覚性を上げるために、A列,A行は使用しません✖
!
📝 Scheduleシート(予定データベース)
- 役割:すべての予定情報を管理
- データ構造:
列 | 項目名 | 内容例 |
---|---|---|
B | 作業名 | ポップアップブース設営 |
C | 作業場所 | 池袋タワー2F |
D | 担当者 | 山田玲奈 |
E | 作業日 | 2025/1/15 |
!![]() |
🎌 National_Holidayシート(祝日データベース)
- 役割:祝日情報の管理とカレンダーへの色付け指示
- データ形式:日付形式で祝日を一覧管理
!
メイン機能について
メイン機能1_自動日付生成システム
🎯 この機能でできること
カレンダーの日付を完全自動生成:
- 年と月を指定するだけで、その月を含む6週間分の日付が自動作成
- 月の1日がどの曜日から始まっても、必ず日曜日始まりの美しいカレンダー形式で表示
- 前月末と翌月初の日付も自動で配置され、標準的なカレンダー表示を実現
🔄 処理の流れ
- 基準日の算出:指定された年月の1日から、その週の日曜日を計算
- 連続日付の生成:基準日から順次1日ずつ加算して横方向に展開
- 週単位の展開:7日単位で縦方向に6週間分を自動生成
🛠️ 使用する主要関数
- DATE関数:年、月、日を組み合わせて日付を作成
- WEEKDAY関数:指定した日付の曜日を数値(1-7)で取得
- 算術演算:日付の加算・減算による連続日付の生成
📐 計算の仕組み
基準となる計算式:
=DATE($B$2,$G$2,1)-WEEKDAY(DATE($B$2,$G$2,1))+1
この式により、指定月の1日がどの曜日であっても、その週の日曜日を正確に算出し、カレンダーの開始日として設定します。
メイン機能2_予定自動表示システム
🎯 この機能でできること
予定データの完全自動連携:
- Scheduleシートに入力された予定が、該当する日付のカレンダーセルに自動表示
- 同日に複数の予定がある場合、すべて縦に並んで表示
- 予定の追加・変更・削除は、Scheduleシートで行うだけで瞬時にカレンダーに反映
🔗 データ連携の仕組み
Scheduleシートとの連携:
- 作業日(E列):カレンダーの各日付セルと照合するキー
- 作業名(B列):予定のタイトルとして表示
- 作業場所(C列):予定の場所情報として表示
- 担当者(D列):予定の担当者情報として表示
National_Holidayシートとの連携:
- 祝日データ:カレンダーの日付セルと照合
- 色付け指示:一致した日付セルの背景色を自動変更
- 視認性向上:祝日を一目で識別可能
🔄 処理の流れ
- 日付照合:カレンダーの各日付セルが、Scheduleシートの作業日(E列)と一致するデータを検索
- データ抽出:一致した行の予定情報(作業名、場所、担当者)を取得
- 書式整形:取得したデータを見やすい形式に整形
- 表示実行:整形されたデータをカレンダーの該当セルに表示
🛠️ 使用する主要関数
- FILTER関数:条件に一致するデータのみを抽出
- TEXTJOIN関数:複数のデータを結合して一つの文字列に整形
- IFERROR関数:データが存在しない場合のエラー処理
- CHAR関数:改行文字(CHAR(10))による表示書式の制御
- COUNTIF関数:祝日データとの照合による条件判定
自動更新スケジュール管理カレンダー作成手順
メイン機能1のセットアップ手順
ステップ1:基本構造の作成
- 新規Excelブック作成
- シート名変更:
- Sheet1 → Calendar
- Sheet2 → Schedule
- Sheet3 → National_Holiday
- Sheet4 → Cover
!
ステップ2:Calendarシートの設定
🔢 基本入力項目
B2セル(年の入力):
2025
G2セル(月の選択): データ入力規則の設定
- データ→データの入力規則→リスト
!
!
- 元の値:
1,2,3,4,5,6,7,8,9,10,11,12
!
!
📋 カレンダー枠の準備
B3セル-H3セル(曜日ヘッダー):
B3: SUN C3: MON D3: TUE E3: WED F3: THU G3: FRI H3: SAT
カレンダー本体の枠組み(B4-H15):
- 横7セル:日曜日から土曜日までの1週間分
- 縦12行:日付行(6行)+予定行(6行)の交互配置
- 配置パターン:
B4: 日付 C4: 日付 D4: 日付 E4: 日付 F4: 日付 G4: 日付 H4: 日付 B5: 予定 C5: 予定 D5: 予定 E5: 予定 F5: 予定 G5: 予定 H5: 予定 B6: 日付 C6: 日付 D6: 日付 E6: 日付 F6: 日付 G6: 日付 H6: 日付 B7: 予定 C7: 予定 D7: 予定 E7: 予定 F7: 予定 G7: 予定 H7: 予定 ...(6週間分)
!
📅 日付計算数式の入力
B4セル(基準日付):
=DATE($B$2,$G$2,1)-WEEKDAY(DATE($B$2,$G$2,1))+1
!
🔍 なぜ最後に+1が必要なのか
日曜日始まりのカレンダーでは、月の1日がどの曜日であっても、その週の日曜日から表示を開始する必要があります。 ❌ +1なしの場合 ➔ 2024年12月28日 (土曜日) 週の途中から始まってしまう! ✅ +1ありの場合 ➔ 2024年12月29日 (日曜日) 週の始まり(日曜日)から正しく開始!
💡 計算ロジックの詳細
1. **DATE($B$2,$G$2,1)** → 2025年1月1日(水曜日) 2. **WEEKDAY(...)** → 4(水曜日の番号) 3. **1月1日 - 4** → 2024年12月28日(土曜日) 4. **+ 1** → 2024年12月29日(日曜日)← これが週の正しい開始日
+1は「週の正しい開始日(日曜日)」を取得するために必要です。
これにより、月の1日がどの曜日であっても、カレンダーは常に日曜日から始まる完全な週で表示されます。
C4セル(横方向連続日付):
=$B$4+1
!
※この数式をD4、E4、F4、G4、H4まで右方向にコピー
※D4は火曜日なので、B4セル(基準となる日曜日)に2を加算した数字となる、 =$B$4+2
※E4であれば+3、F4であれば+4、G4であれば+5、H4であれば+6と加算する数字が1つずつ増加する
B6セル(2週目の日曜日):
=$B$4+7
C6セル(2週目の連続日付):
=$B$6+1
※この数式をD6、E6、F6、G6、H6まで右方向にコピー
B8セル(3週目の日曜日):
=$B$6+7
C8セル(3週目の連続日付):
=$B$8+1
※この数式をD8、E8、F8、G8、H8まで右方向にコピー
B10セル(4週目の日曜日):
=$B$8+7
C10セル(4週目の連続日付):
=$B$10+1
※この数式をD10、E10、F10、G10、H10まで右方向にコピー
B12セル(5週目の日曜日):
=$B$10+7
C12セル(5週目の連続日付):
=$B$12+1
※この数式をD12、E12、F12、G12、H12まで右方向にコピー
B14セル(6週目の日曜日):
=$B$12+7
C14セル(6週目の連続日付):
=$B$14+1
※この数式をD14、E14、F14、G14、H14まで右方向にコピー
🎨 日付セルの書式設定
日付表示形式の設定:
- 日付セル範囲を選択:B4、C4:H4、B6、C6:H6…(すべての日付セル)
- 右クリック→セルの書式設定
- 表示形式→ユーザー定義
- 種類欄に入力:
d
- OKをクリック
これにより、日付が「15」「20」のように日付のみで表示されます。
!
メイン機能2のセットアップ手順
📝 予定表示数式の入力
この部分は、カレンダーシステムの最も重要な機能である「予定の自動表示」を実現する複合関数です。段階的に理解していきましょう。
B5セル(予定取得):
=IFERROR(TEXTJOIN("",TRUE,FILTER("■【"&Schedule!$B:$B&"】"&CHAR(10)&" <P> "&Schedule!$C:$C&CHAR(10)&" <M> "&Schedule!$D:$D&CHAR(10)&CHAR(10),Schedule!$E:$E=B4)),"")
!
!
🔍 複合関数の詳細解説
この関数は3つの重要な関数が入れ子になった構造です:
!
🛡️ 外側:IFERROR関数
=IFERROR([メインの数式],"")
役割:エラー防止の安全装置
- メインの数式でエラーが発生した場合、空の文字列"“を表示
- 予定が存在しない日付でも「#N/A」などのエラー表示を防ぐ
- システム全体の安定性を確保
なぜ必要?:
- 予定がない日は検索結果が空になり、通常はエラーが発生
- エラー表示ではなく、何も表示しない(空白)にすることで美しいカレンダーを維持
🔗 中間:TEXTJOIN関数
TEXTJOIN("",TRUE,[配列データ])
役割:複数データの結合処理
- 第1引数
""
:区切り文字なし(データを直接つなげる) - 第2引数
TRUE
:空白セルを無視 - 第3引数:つなげる配列データ(FILTER関数の結果)
具体的な動作: 同じ日に複数の予定がある場合、それらを縦に並べて一つの文字列として結合します。
例:1月15日に「会議」と「研修」がある場合
■【会議】
<P> 会議室A
<M> 田中
■【研修】
<P> 研修室B
<M> 佐藤
🔍 中心:FILTER関数(データ検索の中枢)
FILTER([表示用文字列], [条件式])
🎯 条件式の詳細:
Schedule!$E:$E=B4
- Schedule!$E:$E:ScheduleシートのE列全体(作業日の列)
- =B4:B4セル(表示対象日付)と一致する
- 動作:E列の各セルをB4と比較し、一致する行のみを抽出
📊 表示用文字列の構成:
"■【"&Schedule!$B:$B&"】"&CHAR(10)&
" <P> "&Schedule!$C:$C&CHAR(10)&
" <M> "&Schedule!$D:$D&CHAR(10)&CHAR(10)
🔧 文字列構成要素の詳細説明:
要素 | 内容 | 役割 |
---|---|---|
"■【" | 黒四角+開始括弧 | 予定の視覚的区切り |
Schedule!$B:$B | B列(作業名) | 予定のタイトル |
"】" | 終了括弧 | タイトル部分の終了 |
CHAR(10) | 改行文字 | 次の行への移動 |
" <P> " | 場所マーク | 場所情報の識別子 |
Schedule!$C:$C | C列(作業場所) | 予定の場所情報 |
CHAR(10) | 改行文字 | 次の行への移動 |
" <M> " | 担当者マーク | 担当者情報の識別子 |
Schedule!$D:$D | D列(担当者) | 予定の担当者情報 |
CHAR(10)&CHAR(10) | 改行×2 | 予定項目間の空行 |
📝 実際の表示結果:
Scheduleシートに以下のデータがある場合:
作業名:ポップアップブース設営、場所:池袋タワー2F、担当者:山田玲奈、作業日:2025/9/4
!
B4セルが2025/9/4の場合、B5セルには以下が表示されます:
■【ポップアップブース設営】
<P> 池袋タワー2F
<M> 山田玲奈
!
⚡ 関数の動作フロー:
- FILTER:Schedule!E列から B4と一致する日付を検索
- 該当行抽出:一致した行の作業名、場所、担当者を取得
- 文字列整形:マーカーと改行を加えて見やすい形式に変換
- TEXTJOIN:複数の予定を一つの文字列に結合
- IFERROR:エラー時は空白表示、正常時は整形された予定を表示
📋 効率的なコピー作業
予定表示機能を全カレンダーに適用するための段階的作業手順:
🗓️ 1. 日付行の一括コピー作業
手順1:横方向の数式コピー
- C4セルを選択
- H4までドラッグして選択範囲を拡張(C4:H4を選択状態)
- Ctrl+Cでコピー
- 以下の範囲に順次ペースト:
- C6:H6を選択 → Ctrl+V
- C8:H8を選択 → Ctrl+V
- C10:H10を選択 → Ctrl+V
- C12:H12を選択 → Ctrl+V
- C14:H14を選択 → Ctrl+V
作業のポイント:
- 各週の月曜日~土曜日の日付が自動で正しく計算される
- 絶対参照($B$6、$B$8等)により、各週の日曜日を正確に基準とする
📝 2. 予定行の一括コピー作業
手順1:予定表示数式の全体コピー
- B5セルを選択(予定表示の複合関数が入力済み)
- Ctrl+Cでコピー
- B5:H15の全範囲を選択(予定表示エリア全体)
- Ctrl+Vでペースト
手順2:範囲選択の効率的な方法
- B5セルをクリック
- Ctrl+Shift+Endで右下端まで選択(または)
- B5セルから手動でH15までドラッグ選択
⚡ コピー作業の重要ポイント:
作業 | 対象範囲 | 効果 |
---|---|---|
日付行コピー | C4:H4 → 各週 | 横方向の連続日付生成 |
予定行コピー | B5 → B5:H15全体 | 全セルに予定表示機能を適用 |
🔍 コピー後の確認事項:
- 数式の相対参照:各セルが正しい日付セル(1つ上の行)を参照しているか
- 絶対参照の維持:Schedule!$B:$B等の参照範囲が変更されていないか
- 表示テスト:Scheduleシートにテストデータを入力して表示確認
💡 作業効率化のコツ:
- 名前ボックス活用:B5:H15を直接入力して範囲選択
- Shift+クリック:B5選択後、Shiftを押しながらH15をクリック
- Ctrl+A:予定表示エリア全体を素早く選択(範囲を事前選択後)
ステップ3:Scheduleシートの設定
📋 データベース構造の作成
見出し行の設定(2行目):
- B2セル:
作業名
- C2セル:
作業場所
- D2セル:
担当者
- E2セル:
作業日
!!
📊 サンプルデータの入力例
3行目(サンプル1):
- B3セル:
ポップアップブース設営
- C3セル:
池袋タワー2F
- D3セル:
山田玲奈
- E3セル:
2025/9/4
4行目(サンプル2):
- B4セル:
案内サイン撤去
- C4セル:
川崎館
- D4セル:
藤原蒼
- E4セル:
2025/9/4
!
ステップ4:National_Holidayシートの設定
📋 祝日データベースの作成
見出し行の設定:
- A3セル:
祝日名
- B3セル:
日付
B4セル以降に祝日の日付を入力:
B4: 2025/1/1 (元日)
B5: 2025/1/13 (成人の日)
B6: 2025/2/11 (建国記念の日)
B7: 2025/2/23 (天皇誕生日)
B8: 2025/02/24 (振替休日
B9: 2025/3/20 (春分の日)
B10: 2025/4/29 (昭和の日)
B11: 2025/5/3 (憲法記念日)
B12: 2025/5/4 (みどりの日)
B13: 2025/5/5 (こどもの日)
B14: 2025/05/06 (振替休日
B15: 2025/7/21 (海の日)
B16: 2025/8/11 (山の日)
B17: 2025/9/15 (敬老の日)
B18: 2025/9/23 (秋分の日)
B19: 2025/10/13 (スポーツの日)
B20: 2025/11/3 (文化の日)
B21: 2025/11/23 (勤労感謝の日)
B22: 2025/11/24 (振替休日
!
ステップ5:条件付き書式の設定
🎌 祝日の色付け設定
範囲選択:
$B$4:$H$15
(日付セル範囲) !ホーム→条件付き書式→新しいルール→数式を使用して書式設定するセルを決定!
数式入力:
=COUNTIF(National_Holiday!$B$4:$B$22,B4)>0
!
- 書式設定:背景色をオレンジ(例:RGB 255,192,0)に設定
🌙 前月・翌月日付の薄色表示設定
※上記同様に設定を進める
- 範囲選択:
$B$4:$H$15
- 条件付き書式→新しいルール→数式を使用
- 数式入力:
=MONTH(B4)<>$G$2
- 書式設定:文字色を薄いグレー(例:RGB 192,192,192)に設定
📝 予定欄の連動書式設定
- 範囲選択:
$B$5:$H$15
(予定表示セル範囲) - 条件付き書式→新しいルール→数式を使用
- 数式入力:
=MONTH(INDIRECT(ADDRESS(ROW()-1,COLUMN())))<>$G$2
- 書式設定:上記と同じ薄いグレー設定
📋 条件付き書式の優先順位設定
条件付き書式の適用順序は以下の通りに設定:
- 祝日の色付け(最優先)
- 前月・翌月の薄色表示
- その他の書式
優先順位の変更方法:
- ホーム→条件付き書式→ルールの管理
- 上下の矢印で順序を調整
Coverシートの設定
🏠 ナビゲーション機能付きカバーページの作成
Coverシートは、システム全体の入り口として、各シートへの案内機能を持つページを作成します。 任意の画像を用意いただき、各種画像に対しても設定が可能です。 各種画像を選択 > Ctrl + K > ジャンプ先のシートとセルを選択
📋 基本レイアウトの作成
タイトル部分(A1セル):
Excel自動カレンダーシステム
説明文(A3セル):
このシステムは年月を変更するだけで自動的にカレンダーが更新され、
予定データが自動で表示される便利なツールです。
🔗 ナビゲーションメニューの作成
メニュー項目の配置:
A5セル:📅 カレンダー表示
A7セル:📝 予定データ管理
A9セル:🎌 祝日データ管理
A11セル:❓ 使用方法
⚡ ハイパーリンクの設定方法
各メニュー項目にシートジャンプ機能を設定します:
1. カレンダー表示(A5セル)のリンク設定:
- A5セルを選択
- Ctrl + Kを押す(または右クリック→リンク)
- ハイパーリンクの挿入ダイアログで「このドキュメント内」を選択
- シート一覧から「Calendar」を選択
- セル参照:
B2
(年入力セル)を指定 - OKをクリック
2. 予定データ管理(A7セル)のリンク設定:
- A7セルを選択
- Ctrl + Kを押す
- 「このドキュメント内」→「Schedule」シートを選択
- セル参照:
B3
(データ入力開始位置)を指定 - OKをクリック
3. 祝日データ管理(A9セル)のリンク設定:
- A9セルを選択
- Ctrl + Kを押す
- 「このドキュメント内」→「National_Holiday」シートを選択
- セル参照:
B4
(祝日データ開始位置)を指定 - OKをクリック
4. 使用方法(A11セル)のリンク設定:
- A11セルを選択
- Ctrl + Kを押す
- 「このドキュメント内」→「Calendar」シートを選択
- セル参照:
A1
(カレンダートップ)を指定 - OKをクリック
🎨 視覚的な装飾
メニュー項目の書式設定:
- A5、A7、A9、A11セルを選択
- フォントサイズ:14pt
- フォント色:青色(RGB 0,0,255)
- 下線:設定(ハイパーリンクの視覚的表示)
背景色の設定:
- A5:A11の範囲を選択
- 背景色:薄い青色(RGB 230,240,255)
- 境界線:外枠を設定
📝 使用説明の追加
A13セル以降に簡単な使用方法を記載:
【使用方法】
1. 📅 カレンダー表示:年月を入力してカレンダーを表示
2. 📝 予定データ管理:予定の追加・編集を行う
3. 🎌 祝日データ管理:祝日情報の確認・編集
4. 各項目をクリックすると該当シートにジャンプします
システムの動作の流れ
1. 初期設定の段階
- B2(年)、G2(月)に値を設定
- B4セルが月初を含む週の日曜日を自動計算
- C4以降が連続する日付を自動作成
2. データ連携の段階
- 各日付セルの下のメモ欄(B5以降)がScheduleシートを検索
- FILTER関数が該当日の予定情報を探す
- TEXTJOIN関数が複数予定を整理して表示
3. 見た目調整の段階
- 条件付き書式が各セルの日付を判定
- 祝日、土日、前月・翌月日付それぞれに適切な色を適用
- 優先順位:祝日 > 土日 > 前月・翌月日付
カスタマイズ提案
🔄 機能拡張アイデア
時間管理の追加:
F列: 開始時刻 G列: 終了時刻
カテゴリ別色分け:
H列: 予定種類(会議/作業/移動) → 種類別に背景色を変更
重要度表示:
I列: 優先度(高/中/低) → アイコンや文字色で区別
表示形式の改良
現在の表示:
■【作業名】
<P> 場所
<M> 担当者
改良版の提案:
🕐 09:00-17:00 ■【作業名】
📍 場所 | 👤 担当者 | ⭐ 重要
作成時の重要なポイント
セル参照の使い分け
- 絶対参照($B$2): 年月のように固定値を参照する場合
- 相対参照(B4): 日付のように隣接セルとの関連性を保つ場合
- 混合参照($B4): 列は固定、行は相対的に変化させたい場合
エラーを防ぐ重要性
=IFERROR([メインの数式],"")
データが存在しない日付でもきれいな表示を維持するため、必ずIFERROR関数で包みましょう。
処理速度の最適化
- 全列参照(
$B:$B
)は便利ですが、データ量が多い場合は範囲を限定 - 例:
$B$4:$B$1000
のように実際のデータ範囲に制限
注意事項とトラブルシューティング
📋 システム要件
- Excel バージョン:Office 365 / Excel 2021以降
- 必要関数:FILTER、TEXTJOIN、CHAR関数
- メモリ:大量データ時は範囲指定を推奨(
$B:$B
→$B$1:$B$1000
)
🔧 既存環境への影響度
影響度:★☆☆☆☆(非常に低い)
- ✅ 新規ブック作成のため既存ファイル無影響
- ✅ 標準Excel関数のみ使用
- ✅ 追加ソフトウェア不要
- ✅ 既存の作業環境を変更しない
🚨 トラブルシューティング
問題 | 原因 | 解決方法 |
---|---|---|
予定が表示されない | 日付形式の不一致 | Schedule!E列の日付形式を確認 |
エラー表示 | FILTER関数未対応 | Excelバージョンの確認・更新 |
動作が重い | 全列参照 | データ範囲を具体的に指定 |
まとめ
このExcel動的カレンダーシステムは、4つの主要技術を組み合わせた実用的なツールです:
- 🔢 自動日付計算:DATE + WEEKDAY関数による週開始日の算出
- 📊 動的データ連携:FILTER + TEXTJOIN関数による予定自動表示
- 🎨 視覚的条件分岐:条件付き書式による祝日・月外日付の色分け
- ⚙️ セル参照設計:絶対・相対参照の適切な使い分け
配布用_自動更新スケジュール管理カレンダー
下記のダウンロードボタンをクリックしていただくと本ブログで紹介したサンプルのカレンダーがダウンロード可能です。