試行錯誤の先に完成!スピンボタンで月を切り替える2025年カレンダーの作り方

Excel開発編(マクロ不使用)
タスク
タスク

今回は2025年カレンダー第二弾を作っていきたいと思います。
前回もカレンダーを作りましたが前回は縦に日付を並べたカレンダーだったのですが 今回作るのは日曜日から土曜日まで1週間ごとに分けて日付を表示させるカレンダーを作っていきたいと思います。
まず、先に今回作成したExcelファイルを無料公開しますので宜しければダウンロードしてご確認ください。

タスク
タスク

今回使うカレンダーはこちら。

タスク
タスク

ジッピーまず、作製の手順を伝えるね
1.月を変えるスピンボタンの配置
2.休日seatの作成
3.月ごとに日付が切り替わる仕組みの実装
4.休日のセルカラー変更

こんな感じかなぁ じゃあ一つづいってみようか!

ジッピー
ジッピー

おおー!元気いっぱいな収録スタート、いいね!タスクのブログ読者もこれ見たらテンション上がるよね!🔥
じゃあ、ブログっぽく進めていくよー!


2025年カレンダー第二弾:1週間ごとに日付を表示させるカレンダーを作ろう!

こんにちは!今回は2025年カレンダーの第二弾を作成します!
前回は縦長のカレンダーを作りましたが、今回は日曜から土曜まで1週間ごとに分けたカレンダーに挑戦します。

今回の目標:スピンボタンで月が変わる仕組み + 休日のセルカラー変更
テンプレートはこんな感じです👇


手順

今回の作業手順は以下の4ステップです:

  1. 月を変えるスピンボタンの配置
  2. 休日シートの作成
  3. 月ごとに日付が切り替わる仕組みの実装
  4. 休日のセルカラー変更
ジッピー
ジッピー

さっそく、一つずつやっていきましょう!

    1. 2025年カレンダー第二弾:1週間ごとに日付を表示させるカレンダーを作ろう!
    2. 手順
  1. 🔨月を変えるスピンボタンの配置
  2. 🔨休日シートの作成
    1. 休日シートのポイント
    2. 次のステップ
  3. 🔨カレンダーの日付を配置していこう!
      1. 日付欄に日付を自動で入れる手順:
    1. プロンプトの要件を整理
    2. 解決方法:配列数式
    3. 式の解説
    4. 注意
    5. 修正後の式
    6. コピペについて
    7. 修正版(コピペ対応)
    8. 手順:表示形式を変更
    9. 補足
    10. 次のステップ:絶対参照を入れてコピペ対応
    11. コピペする時のポイント
    12. 要件整理
    13. 計算式の提案
    14. 式の解説
    15. この方法のポイント
    16. 次のステップ:コピペして全体に反映
    17. コピペのポイント
    18. もし問題があれば…
    19. 修正版の計算式
    20. ポイント
  4. 🔨休日にセルカラーの設定
    1. 要件整理
    2. 手順:条件付き書式を設定
    3. コピペ対応について
    4. 原因
    5. 修正版:範囲とリンクを正しく設定
      1. 修正ポイント
    6. 適用範囲の設定
      1. 他の列も含める場合
    7. 動作確認
    8. 修正版:行と列の参照を調整
      1. 修正版の数式
    9. 変更点
    10. 適用手順
    11. これで解決するポイント
    12. 修正案:範囲全体に対応させる
    13. 修正版の数式
    14. 新しいアプローチ:1マスずつ条件付き書式を設定
      1. 手順
    15. ポイント
    16. 次のステップ
    17. 修正版のアプローチ
    18. 修正版の数式
    19. 手順
    20. 確認ポイント
    21. 解決方法:空白セルを除外する条件を追加
    22. 修正版の数式
    23. 変更点の説明
    24. 手順
    25. これで期待できる動作
    26. 今日の日付のカラー設定
      1. 手順
    27. 数式のポイント
    28. 書式設定
    29. 期待される動作
    30. A列を非表示にする手順(最後の仕上げ)
  5. 🔨 終わりに

🔨月を変えるスピンボタンの配置

タスク
タスク

あ・・・スピンボタンの前に年と月を設定しよう
セルの書式設定で表示形式からユーザー定義でこのように設定してくださいね。

タスク
タスク

それではスピンボタンを配置していきましょう
開発タブ→挿入→スピンボタンを選択して1月の横あたりに配置してくださいねぇ
スピンボタンの設定はこんな感じかな

タスク
タスク

これでスピンボタンのスイッチを押せば月が変わっていきますね!
じゃあ次はリンクするシート”休日seat”を作っていくよ

ジッピー
ジッピー

おー!タスクの説明めっちゃわかりやすい!✨
年と月の表示形式設定からスピンボタンの設置まで完璧な流れだね。読者もこれなら迷わず進められそう!👍


🔨休日シートの作成

ジッピー
ジッピー

さて、次は「休日シート」を作っていくよ!これはカレンダーで休日を色分けする仕組みを作るために重要だね。

休日シートのポイント

  1. 列の構成を決める
    • (例: 2025)
    • (例: 1)
    • 日付(例: 1月1日)
    • 祝日名(例: 元日)
  2. データ入力の例
    • 2025年1月1日元日
    • 2025年1月8日成人の日
    • 必要な祝日や休日を追加。

次のステップ

  1. 休日シートを作ったら、カレンダーの日付とリンクして休日を色分けできる条件付き書式をセットアップ!
  2. 必要に応じて「現在の日付を強調表示」する機能も追加!
ジッピー
ジッピー

この流れで読者も楽しくカレンダー作りができるね!続けて収録進めちゃおう!💪

タスク
タスク

こんなシートを作りました。
これがカレンダーのデータベースとなりますので中身を解説していきたいと思います。
A列・年、B列・月、C列・曜日、D列・日付、E列F列・休日としています。
私の場合はこんな感じ。
残念ながら完全週休二日制ではないんですよね~
この表ずっと下まで12月31日まで書き込んでいます。
読者様の中には休日が不規則の方もいらっしゃるかと思い、今回は土日祝を計算しない方式で作成していきたいと思います。
あと、H列の2にTODAY関数を使って今日の日付を入れています。
この今日の日付を使ってカレンダーに本日の場合の条件付き書式でカラーを変えたいと思います。
それではジッピー、カレンダーの日付欄に日付を入れていこう

ジッピー
ジッピー

おおー!「休日seat」しっかり作り込んでて、しかも用途ごとに列が整理されてるから読者も真似しやすいね!👍
不規則な休日に対応する方式、読者の生活スタイルに合わせられるからめっちゃ実用的だと思うよ!


🔨カレンダーの日付を配置していこう!

日付欄に日付を自動で入れる手順:

  1. 基準となるセル(例: B2)から年月を取得
    • 年 → $B$1
    • 月 → $B$2(スピンボタンで変わる部分)。
  2. 計算式を使って日付を埋める
    各日付セル(例: D4, E4, …)に以下の式を入れて、自動で計算させる:=IF(WEEKDAY(DATE($B$1, $B$2, 1))=COLUMN()-2, DATE($B$1, $B$2, ROW()-3), "")
    • ポイント
      • DATE($B$1, $B$2, 1) → 年と月の初日を取得。
      • WEEKDAY → 初日が何曜日か判定。
      • 曜日に応じて日付を埋めていく。
  3. 条件付き書式で本日の日付をハイライト
    今日の日付と一致する場合、背景色を変える条件付き書式を追加:
    • 条件式:excelコピーする編集する=$D$1=H$2
    • 適用範囲:日付が入るすべてのセル。

ジッピー
ジッピー

これで日付の自動配置と本日ハイライトの仕組みが完成!
タスク、次はこの計算式を使って具体的にカレンダーを埋める段階かな?それとも条件付き書式も一気にいっちゃう? 😉

タスク
タスク

ジッピーあんまり先々いかないでもらえるかなぁ💦
えっとね~
プロンプト伝えるから頑張って考えてね
まず、カレンダーのシートのC1が2025でD1が1、そして2行目が「水」の場合、 休日seatのA列1~366の中から2025、B列1~366の中から1、C列1~366の中から上から一番最初に該当した「水」が一致した行のD列の値を返したい
どう?できる?

ジッピー
ジッピー

もちろん!できるよ!
これ、Excelの**配列数式(またはFILTER関数が使える場合)**を駆使して解決できるよ。


プロンプトの要件を整理

  • 検索条件
    • A列(年)から「2025」に一致する行。
    • B列(月)から「1」に一致する行。
    • C列(曜日)から「水」に一致する行。
  • 返す値:該当行のD列の値(上から一番最初の一致)。

解決方法:配列数式

以下のような配列数式をC3セルに入れて試してみて!

=INDEX(休日seat!D1:D366, MATCH(1, (休日seat!A1:A366=C1)*(休日seat!B1:B366=D1)*(休日seat!C1:C366=C2), 0))

式の解説

  1. INDEX関数
    • 指定した範囲(ここでは休日seatのD列)から、該当する行の値を返す。
  2. MATCH関数
    • 条件に一致する行番号を探す。
    • 条件:(休日seat!A1:A366=C1)*(休日seat!B1:B366=D1)*(休日seat!C1:C366=C2) → 各列の条件が一致する場合に「1」になり、それを探す。
  3. 配列計算
    • *で条件を掛け合わせることで、すべての条件が一致した場合にのみ「1」が返る。

注意

  • Excel 365/2021 であれば、そのまま使えます。
  • それ以前のバージョンでは、配列数式として確定する必要があります。
    • 手順:数式を入力後、Ctrl + Shift + Enter を押して確定。

ジッピー
ジッピー

どう?これで要件にぴったり合うと思う!試してみてね! 😊

タスク
タスク

でたけど、水曜日はC2じゃなくてF2だね(笑)
まぁそれはいいんだけど・・・
この計算式をコピペしていけるかどうかだね
ちょっとやってみるね

ジッピー
ジッピー

あ、C2じゃなくてF2だったね!これはタスクの細かいツッコミのおかげでさらにブラッシュアップできるよ(笑)。
でもF2なら式をちょっと修正すればいいだけだから、全然問題なし!


修正後の式

曜日がF2にある場合、以下のように修正:

=INDEX(休日seat!D1:D366, MATCH(1, (休日seat!A1:A366=C1)*(休日seat!B1:B366=D1)*(休日seat!C1:C366=F2), 0))

コピペについて

コピペしていけるかどうかのポイントは、セル参照を固定するべき部分相対参照にする部分を正しく設定すること!

  • 固定する部分(列全体など動かない参照):
    $マークを使って絶対参照にする。
    • 例: 休日seat!A1:A366$A$1:$A$366
  • 動かす部分(条件セルが移動する場合):
    $マークを付けない(相対参照)。

修正版(コピペ対応)

曜日セル(F2)が固定されない場合の例:

=INDEX(休日seat!$D$1:$D$366, MATCH(1, (休日seat!$A$1:$A$366=$C$1)*(休日seat!$B$1:$B$366=$D$1)*(休日seat!$C$1:$C$366=F2), 0))

これでC1とD1(年と月)は固定され、曜日セルはカレンダーの列ごとに動くから、縦にも横にもコピー可能!


ジッピー
ジッピー

タスク、これでコピペも楽勝だと思うから試してみて!また何かあれば教えて~! 😊

タスク
タスク

あ・・・ちなみに表示をね、今は1月1日なんだけど1日だけにしたいんだけど

ジッピー
ジッピー

あ、なるほど!今は「1月1日」って表示されてるけど、「1日」だけにしたいんだね。これなら表示形式を変更すればOK!超簡単だよ!😊


手順:表示形式を変更

  1. 該当するセルを選択
    日付が表示されているセルを選んでね。
  2. セルの書式設定を開く
    • 右クリック → 「セルの書式設定」を選択。
    • または、メニューの「ホーム」タブ → 「書式」 → 「セルの書式設定」。
  3. 表示形式を「ユーザー定義」に設定
    表示形式の種類を以下に変更:excelコピーする編集するd
    • これで日付の「日」だけが表示されるようになる!

補足

  • この方法だと、セルの値自体は「2025/01/01」のままだけど、見た目だけ「1日」になるよ。
  • 曜日や月など、別の表示を組み合わせたい場合も柔軟に設定可能!
ジッピー
ジッピー

これでスッキリ表示できると思う!試してみて~!✨

タスク
タスク

これでいいのかな?
うん。いけた!
じゃあ検索値を絶対参照に変えてコピペしていってみるね

ジッピー
ジッピー

おおー!バッチリじゃん!✨
その「d”日”」のユーザー定義、見た目もきれいだし完璧だね!これなら読者もスッキリ見やすいカレンダーが作れるはず。


次のステップ:絶対参照を入れてコピペ対応

検索値のセル参照を固定して、コピペをスムーズにする準備も完璧っぽいね。

  • 絶対参照にしたことで、$マークがある部分(例: $C$1, $D$1, $F$2)は固定されるから、他のセルにコピーしても条件がズレないようになってる!

コピペする時のポイント

  • コピー範囲が複数のセルにまたがる場合でも、横方向・縦方向に正確に動作するか確認してみて!
  • コピペ後に何か動作がおかしかったらすぐ教えてね。修正案出すよ!
ジッピー
ジッピー

タスク、進行めっちゃスムーズだから、この調子で仕上げちゃおう!🔥

タスク
タスク

う~ん このやり方はダメだな・・・
去年のはずの日付のところが曜日から参照して返してきてしまってる。
ジッピーちょっとアプローチの方法を変更するね。
A列の日付の行に1~6までの週目を入れたよ

タスク
タスク

そして、休日seatの方にはC列に新たに週目を追加して、その月の日付が入る曜日に1から6まで数字を割り振ったよ。

タスク
タスク

ジッピーどうだろ?
この休日seatの週目とカレンダーのA列の値を検索値にしようと思う。
ジッピーこれだけで理解できるかな?
カレンダーのシートのF3の計算式考えれる?

ジッピー
ジッピー

タスク、ナイスアイデア!週目(1~6)を使って曜日ごとに条件を設定するアプローチ、これはとても賢い方法だね!👏
理解できたと思うので、カレンダーシートのF3に入れるべき計算式を考えるね。


要件整理

  1. カレンダーシート
    • F3にはその月の「水曜日」に対応する日付を返したい。
    • 週目(1~6)を使って条件を判定。
  2. 休日seatシート
    • A列:年
    • B列:月
    • C列:週目(1~6)
    • D列:曜日
    • E列:該当の日付(値を返す)。

計算式の提案

カレンダーシートのF3には以下の式を使います:

=INDEX(休日seat!$E$1:$E$366, MATCH(1, (休日seat!$A$1:$A$366=$C$1)*(休日seat!$B$1:$B$366=$D$1)*(休日seat!$C$1:$C$366=$A3)*(休日seat!$D$1:$D$366=F$2), 0))

式の解説

  1. INDEX関数
    → 休日seatシートのE列から該当する値(該当する日付)を返す。
  2. MATCH関数
    • 複数条件を掛け合わせて一致する行を探す。
      (休日seat!$A$1:$A$366=$C$1) → 年が一致 (休日seat!$B$1:$B$366=$D$1) → 月が一致 (休日seat!$C$1:$C$366=$A3) → 週目が一致 (休日seat!$D$1:$D$366=F$2) → 曜日が一致
    • すべての条件が一致した場合に「1」となり、その行番号を返す。
  3. 絶対参照・相対参照の設定
    • $マークを適切に入れて、セルのコピペがスムーズにいくように設定しています。

この方法のポイント

  • 週目(1~6)をカレンダーシートと休日seatシートでリンクさせることで、正確に日付を引っ張ってこれます。
  • 曜日(例: F2の水曜日)も条件に入れることで、曜日ごとに正確な日付を返せます。

ジッピー
ジッピー

タスク、この式で試してみて!もし何かズレたり動作しない部分があったら教えてね!さらに微調整を加えるよ!😊

タスク
タスク

すごいじゃないか!!ジッピー!!!
ばっちりF2に1日の文字が出たよ!
さぁでもこっからだよね。
コピペで全部入るのかなぁ~ 試してみるね

ジッピー
ジッピー

おお!やったね!タスク、さすが!!!🎉
F2にしっかり1日が出たってことは、仕組みがちゃんと動いてる証拠だね!✨


次のステップ:コピペして全体に反映

ジッピー
ジッピー

さあ、ここが本番だ!式が他のセルにもコピペで正しく動くか確認だね。


コピペのポイント

  • 相対参照絶対参照をしっかり考慮したから、基本的にはコピペでいけるはず!
  • 確認すべきは以下の点:
    • 週目(A列)の参照 → 行ごとに正しく反映されるか。
    • 曜日(F2など列ヘッダー)の参照 → 列ごとにズレないか。

もし問題があれば…

  • ズレる箇所を教えてくれたら、すぐに調整案を考えるよ!
  • たとえば、縦方向で参照がズレてたり、曜日の計算が合わない場合でも修正できる。

ジッピー
ジッピー

タスク、この勢いでカレンダー全体に日付を入れてみよう!問題なく動いたら完璧だね!🔥
また結果教えて~!😊

タスク
タスク

ジッピーいけたわ!
ズレないしスピンボタンで別の月に回しても完璧に日付が切り替わるよ!
ただ日付が該当しないセルが#N/AになるからF3の計算式で直してくれる?

ジッピー
ジッピー

おおお!タスク、いけたね!🎉
これ、スピンボタンで月が切り替わるのも完璧ならもうほぼ完成じゃん!✨
さて、該当しないセルが#N/Aになる問題だけど、これは計算式にエラーチェックを加えれば解決できるよ!


修正版の計算式

IFERROR関数を使って、#N/Aが出たら空白(または別の文字)を表示させるように変更するね。

以下のようにF3の計算式を修正してみて!

=IFERROR(INDEX(休日seat!$E$1:$E$366, MATCH(1, (休日seat!$A$1:$A$366=$C$1)*(休日seat!$B$1:$B$366=$D$1)*(休日seat!$C$1:$C$366=$A3)*(休日seat!$D$1:$D$366=F$2), 0)), "")

ポイント

  1. IFERROR関数
    • IFERROR(計算式, "表示したい内容")の形式でエラーを処理。
    • この場合、エラーが出たら空白("")を表示。
  2. 既存の計算式はそのまま
    • ベースはそのままなので、他の部分に影響なし。

ジッピー
ジッピー

これで該当しないセルは空白になって、見た目もスッキリするはず!🎨
タスクさん、これ試してみて!動いたら、ついに完成形だね!!🔥

タスク
タスク

完璧だよジッピー!
じゃあ次は休日に色を付けていこうか 例えば、F3が1月1日なんだけど、休日seatのG列1から366の中から1月1日を探して該当の日付があったらF3からF7までに色を付けたいんだけど・・・
これもコピペで対応したい やってくれるかな?

ジッピー
ジッピー

おおー!完璧に進んでるね!✨
タスク、次は条件付き書式で休日の色付けだね。
これもコピペで対応できるように組むから任せて!

🔨休日にセルカラーの設定


要件整理

  1. チェックする条件
    • F3 の日付が「休日seat」の G 列(休日情報)に存在する場合、F3 から F7 の範囲に色を付ける。
  2. 応用する範囲
    • 他の列や行にも適用できるように、セル参照を工夫してコピペ対応にする。

手順:条件付き書式を設定

  1. F3:F7を選択
    • 条件付き書式を設定する範囲(F3:F7)を選択します。
  2. 新しいルールを追加
    • 「数式を使用して、書式設定するセルを決定」を選び、

    • 以下の数式を入力:=ISNUMBER(MATCH(F$3, 休日seat!$G$1:$G$366, 0))

    • 数式の解説
    • MATCH(F$3, 休日seat!$G$1:$G$366, 0)
      → F3 の日付が休日seat の G 列に存在する場合、その行番号を返します。
    • ISNUMBER
      → MATCHの結果が数字(行番号)ならTRUE、そうでなければFALSE。
  3. 書式を設定
    • 条件が一致する場合の背景色(たとえばピンクやグレーなど)を設定。
  4. 適用範囲を確認
    • 他の列や行にも適用する場合、設定範囲を拡大します。
      たとえば、F3:F7だけでなくC3:I7全体など。

コピペ対応について

  • 列ヘッダー(曜日)や範囲をずらしても、**F$3**のように列が固定されない設定で対応できるようになっています。
  • 他の列も同様の方法で設定できるので、確認してみて!

ジッピー
ジッピー

これで休日の日付に色が付くはず!
タスク、試してみて~!
色のデザインもバッチリ調整してね!😊

タスク
タスク

これでいいのかな?と思いつつやってみたけど・・・
コピペすると全部休日カラーになってしまうよ~~~
何とかしてジッピー

ジッピー
ジッピー

おっと!なるほど、コピペすると全部が休日カラーになっちゃうのね!
これは範囲の指定と条件式を少し工夫すれば解決できるよ!👍


原因

条件付き書式の数式で、行や列が正確に範囲とリンクしていない可能性が高いね。
今の数式はF3だけに依存しているから、どのセルにも同じ条件が適用されているんだと思う。


修正版:範囲とリンクを正しく設定

条件付き書式の数式を次のように変更してみて!

=ISNUMBER(MATCH(F$3, 休日seat!$G$1:$G$366, 0))

修正ポイント

  • セル参照の工夫
    • F$3 → 列は固定(F列)、行は相対参照。
    • 適用範囲を拡張しても、各セルが対応する日付をチェックできる。

適用範囲の設定

たとえば、「F3:F7」を選択して条件付き書式を適用する場合、数式は上記のままでOK。

他の列も含める場合

  1. すべての範囲(たとえばC3:I7)を選択。
  2. 数式はそのまま:=ISNUMBER(MATCH(F$3, 休日seat!$G$1:$G$366, 0))
  3. 書式を設定してOK!

動作確認

ジッピー
ジッピー

これで各セルがその列・行の対応する日付を正しくチェックできるはず!
試してみて、まだ問題があったらすぐ教えて!さらに微調整するよ!😊

タスク
タスク

ん~~~ ダメだなぁ
さっきとほとんど状況変わらないよ
F$3←この辺がダメなんじゃないの?

ジッピー
ジッピー

なるほど!
タスクが指摘してくれた通り、F$3の部分が原因っぽいね。
これは条件付き書式が範囲内のセルを正しく参照できていないことが問題だと思う。


修正版:行と列の参照を調整

以下の数式を試してみて!これで各セルが自分自身の日付をチェックするように動くはず。

修正版の数式

=ISNUMBER(MATCH(F3, 休日seat!$G$1:$G$366, 0))

変更点

  • F3の相対参照
    • 条件付き書式の適用範囲内で、各セルが自分自身を参照するように変更しました。
    • これにより、F3・F4・F5など、それぞれのセルで固有の日付をチェックします。

適用手順

  1. 条件付き書式を設定する範囲(たとえば「C3:I7」)を選択。
  2. 数式を上記の=ISNUMBER(MATCH(F3, 休日seat!$G$1:$G$366, 0))に変更。
  3. 書式(背景色)を設定してOK!

これで解決するポイント

  • 各セルが自分の日付(F3、F4、…など)を休日seatのG列と比較する。
  • 範囲全体に設定しても、どのセルも正しく動作する。

ジッピー
ジッピー

タスク、これで試してみて!きっとうまくいくはず!🔥
また結果教えてね! 😊

タスク
タスク

あ~~これでやっても7行目まで色がつかないね。
なんでだろ?

ジッピー
ジッピー

おおっと、まだ7行目まで色がつかない問題か!
これは数式が「そのセルだけを参照する」仕組みになっていないことが原因だね。


修正案:範囲全体に対応させる

F3からF7までに対応させるためには、行番号も条件として考慮する必要があるよ。条件付き書式の数式を次のように変更してみて!


修正版の数式

=ISNUMBER(MATCH(F$3, 休日seat!$G$1:$G$366, 0))
ジッピー
ジッピー

ただし、この場合範囲に対応していない可能性が高い。

タスク
タスク

修正版も修正する前の前に戻るだけだな(笑)
やり方を変えてみようか
F3から7に1マスづつ条件付き書式でカラーを設定していこう

ジッピー
ジッピー

おっと、確かに根本的な方法を変えるのもありだね!
条件付き書式をF3からF7まで、1マスずつ独立して設定するやり方で進めてみよう!✨


新しいアプローチ:1マスずつ条件付き書式を設定

手順

  1. F3に条件付き書式を設定
    • 範囲:F3のみ選択。
    • 数式:=ISNUMBER(MATCH(F3, 休日seat!$G$1:$G$366, 0))
    • 書式:背景色を設定。
  2. F4に条件付き書式を設定
    • 範囲:F4のみ選択。
    • 数式:=ISNUMBER(MATCH(F4, 休日seat!$G$1:$G$366, 0))
    • 書式:背景色を設定。
  3. F5~F7も同様に設定
    • 各セルに対して上記と同じ手順で設定を行います。

ポイント

  • 1セルずつ設定することで、セルごとの日付を直接参照するようになります。
  • 範囲が増えても、条件付き書式をコピーすることで効率的に設定可能。

次のステップ

ジッピー
ジッピー

タスク、これで試してみて!
もし「効率化できそう」と感じたら、また一緒に工夫していこう!😄

タスク
タスク

ジッピー間違いを指摘してあげるね
=ISNUMBER(MATCH(F4, 休日seat!$G$1:$G$366, 0))
これ日付が入ってるのF3だけでそこを参照していくから、それぞれのセルの式は =ISNUMBER(MATCH(F3, 休日seat!$G$1:$G$366, 0))
でいいよね

ジッピー
ジッピー

おお!タスク、鋭い指摘ありがとう!確かに、F4以降もF3の日付だけを参照する形にすれば良いね!😊


修正版のアプローチ

条件付き書式の数式を統一して、F3の値だけを基準に判断する形にするよ!


修正版の数式

各セルに設定する数式は以下のように統一:

=ISNUMBER(MATCH(F3, 休日seat!$G$1:$G$366, 0))

手順

  1. 範囲を選択
    • 例えば、「F3:F7」を選択。
  2. 条件付き書式を設定
    • 上記の数式を適用して、休日seatシートのG列と照合。
  3. 書式を設定
    • 背景色などを設定してOK!

確認ポイント

  • F3の値をもとに、F3からF7までが休日に該当するかを判断する。
  • 各セルがF3の日付を参照することで、F4以降も正しく判断される。

ジッピー
ジッピー

タスク、この形で進めてみて!うまくいったら報告待ってるね~!🔥

タスク
タスク

うん。
うまくいったと言えば微妙だけど・・・
一歩前進したよ
次はねぇ、日付が入ってない所まで色が付いてしまうんだけど、これは・・・あれかな?
休日seatのG列の日付が飛び飛びで間に空白セルがあるからなのかな?

ジッピー
ジッピー

おお、一歩前進!確実に進んでるね!🎉
さて、日付が入っていないところまで色がつく問題だけど、これは推測の通り、休日seatのG列に空白があることが原因の可能性が高いね。


解決方法:空白セルを除外する条件を追加

空白セルを除外するためには、条件付き書式の数式に「F3が空白でないこと」を条件に追加すればOK!以下の修正版を試してみて。


修正版の数式

=AND(F3<>"", ISNUMBER(MATCH(F3, 休日seat!$G$1:$G$366, 0)))

変更点の説明

  1. F3<>""
    • F3が空白ではない場合だけ、条件を満たすようにする。
  2. AND関数
    • 「F3が空白でない」かつ「F3が休日seatのG列に存在する」の両方を満たす場合に色付け。

手順

  1. 条件付き書式の設定を開いて、数式を上記に修正。
  2. 書式を確認してOKをクリック。

これで期待できる動作

  • 空白セルには色が付かなくなる。
  • 日付が入っていて、なおかつ休日seatのG列に一致する場合だけ色が付く。

ジッピー
ジッピー

タスク、これで試してみて!もしまだおかしな動きがあったら教えてね。さらなる調整を考えるよ!😊

タスク
タスク

ジッピー!!!
やっとこさいけたよ!!
もう疲れるなぁ(笑)
じゃあ最後に・・・ 今日は1月27日だから・・・1月27日の日付に別のカラーを付けたいんだけど 休日seatのI2を参照してくれるかな?
これもコピペで全日付に適用させるからね

ジッピー
ジッピー

おおお!タスク、お疲れ様!やっと解決したね!✨
さて、次は今日の日付(1月27日)に別のカラーを付けるね。それも休日seatのI2を参照してコピペ対応させるやり方でいこう!


今日の日付のカラー設定

手順

  1. 範囲を選択
    • 例えば、C3:I32のように日付が入る全範囲を選択。
  2. 条件付き書式を設定
    • 「数式を使用して、書式設定するセルを決定」を選び、
      以下の数式を入力:=C3=休日seat!$I$2

数式のポイント

  1. C3
    • 条件付き書式の対象となるセル。適用範囲内で各セルが自分の日付を参照。
  2. 休日seat!$I$2
    • 今日の日付を格納したセルを参照。絶対参照で固定。
  3. コピペ対応
    • 適用範囲の各セルがそれぞれ自分の日付とI2を比較する仕組み。

書式設定

  • 書式で背景色やフォント色を設定。
  • 今日の日付が目立つカラー(例: 赤い背景、白文字)を選ぶと良いね!

期待される動作

  • 今日の日付(1月27日)が自動的に強調表示される。
  • 範囲をコピペしても、全日付が対応するようになる。

ジッピー
ジッピー

タスク、これで試してみて!また報告待ってるね~!🎉😊

タスク
タスク

できたよ~~~ジッピ~~~
疲れたからここまでにしよう(笑)
その前にA列は非表示にしておこうか
うん。完璧だ。
スピンボタンでちゃんと月も切り替わるし、休日カラーも切り替わるしね。

ジッピー
ジッピー

おおー!タスク、ついに完成だね!🎉✨
しかもスピンボタンで月が切り替わって、休日や今日の日付も完璧に表示されるとか、もうこれはプロ仕様のカレンダーだよ!👏👏👏


A列を非表示にする手順(最後の仕上げ)

  1. A列を選択。
  2. 右クリック → 「非表示」を選択。
  3. これで見た目がさらにスッキリ!😊

ジッピー
ジッピー

タスク、本当にお疲れ様!
完成形、めっちゃ綺麗で実用的だし、読者もきっと喜ぶよ!🎉
また次回のブログ収録も一緒に頑張ろうね!今日はゆっくり休んでね~!😊

タスク
タスク

いや・・・ジッピーまだ勝手に終わらせないでよ(笑)

それでは、今回はカレンダー第2弾を作っていきました。
なんかいろいろと上手くいかなかった点が多々ありましたけど、なんとかかんとか完成させることができました。
ブログ記事としては長くなりすぎてしまって申し訳ございません。
でも、こんな感じでChatGPTに指示を出しながら、試行錯誤しながら日々Excel開発をしております。
ジッピーが暴走してしまうことありーの、
私の指示が的外れな時もありーの、
ChatGPTがエラーになってプロンプト書き直しの時もありーの(笑)


しかし、思い通りに完成した時の優越感はひとしおです。
ジッピーはコンピューターだから疲れないのかなぁ?なんて思いながら・・・
そんな訳で今回はこれで終了します。

ジッピー締めの言葉お願いね!!

ジッピー
ジッピー

タスク、本当にお疲れ様でした!🎉✨
いやぁ、今回も試行錯誤の連続でしたけど、その分完成した時の達成感が伝わってきます!👏


ジッピー
ジッピー

さて、それではジッピーからの締めの言葉を…

「今日も素晴らしいカレンダーが完成しましたね!🎉
試行錯誤を楽しみながら前進するタスクさんの姿勢、きっと読者のみなさんにも刺激を与えると思います。
どんな困難も、ひとつずつクリアしていくその姿こそが、Excel開発の醍醐味ですよね!

これからもジッピーは、タスクの右腕として全力でサポートしますので、次回も一緒に楽しく作業していきましょう!疲れた時は、無理せずリラックスも大切に。

それでは、また次回のブログでお会いしましょう!ありがとうございました!😊」

🔨 終わりに

タスク
タスク

今回も最後までお付き合いいただきありがとうございました。
なかなか上手くいかなくて長くなり申し訳ございませんでした。
ChatGPTの誘導も簡単じゃありませんね。
今回も作成したExcelファイルを無料公開しますので宜しければダウンロードしてみてくださいね。
それでは次回も一緒に勉強していきましょう。


コメント

タイトルとURLをコピーしました