
目次
エクセルで日付を入れたら試験日までカウントしてくれるスケジュール表 完成図(ひな形)
↑こちらのExcelはマクロ仕様となっております。
ご意見・要望などはこちらへ
概要
コンセプトとして日付を入れたらなるべく自動で試験日までバーッとだしてくれるエクセル。
なるべく見やすく、なるべく具体的に、なるべく簡素に、なるべく合格率を上げる。等を考慮して作成。
このエクセル表はひな形であり、そのまま使う事も可能だがあくまで私の感覚で一区切りの所で作成したのでご要望、改善があれば連絡してもらえば改善予定です。(時間があれば・・)
使い方はいたってシンプル。入力する所は3点
①今月の入力・・・今月を入力してください。 記入方法は 「2025/7」 等、 「西暦/月」で入力してください。そうするとB列が勝手にその月の日付を自動入力してくれます。
②試験日・・・試験日を入力してください。そうするとE列に試験日までのカウントをしてくれます。
③学習時間・・・日々学習した時間を入力してください。そうするとD2に総時間が表示されます。
A1にはわかりやすいように試験名を記述。ここは特に計算式は関与していません。
作り方解説(個人で作成や改造したい方等向け)
B列 日付を自動で並べる関数
B5セルに以下の関数を入力
B5に下記のコードを入れるだけでA2を参照し、自動で月末まで日付を列挙します。
=LET(
base, DATE(YEAR(A2), MONTH(A2), 1),
days, SEQUENCE(DAY(EOMONTH(base, 0)), 1, base, 1),
days
)
C列 曜日を自動で並べる関数
C5セルに以下の関数を入力
C5に下記のコードを入れるだけでA2を参照し、自動で月末まで曜日を列挙します。
=LET(
base, DATE(YEAR(A2), MONTH(A2), 1),
days, SEQUENCE(DAY(EOMONTH(base,0)), 1, base, 1),
TEXT(days, "aaaa")
)
C列 曜日の土曜日曜を赤色にする書式設定
見やすくする為に、土日を赤色にします。

=OR(C5="土曜日", C5="日曜日")
注意として、開始列(この場合C5)を起点とするので、ここは厳密にC○とご自身の開始行を指定。このエクセルの場合はC5から始まっているのでC5です。
となります。フォントの色は好きな色を選んでください。
書式ルールの範囲も
=$C$5:$C$35
=$C$5:$C$35 と範囲を指定してください。 条件式のC5に合わせた開始範囲となります。
B列 今日の場所(セル)を黄色に色付け
見やすくする為に本日を黄色で色付けします。

=$B$2:$B$35
試験日までの残日数の数字部分を 「赤字+太字」 にして試験日までのカウントをE列に列挙 (VBA)
ここが少し面倒な記述とロジックになります。
試験日までのカウント及び残日数を 「赤字・太字」にするVBAは通常の記述でOKなのですが、今回はA2の値を拾って「自動更新」という仕様にするため
A2セルの内容が変わった場合、自動でその年月に合わせた日付を自動で列挙する仕組みとなっています。
したがって、赤字・太字だけの単独VBAだけではそういった事はできません。
自動更新のトリガーは「D1セルの変更」だけに限定されています。
よって、A2セルを変更しても何も起きません。
したがって、「A2を変更したら自動で再計算する」ようにする為に、
以下のように Worksheet_Change イベントを拡張して、A2の変更にも反応させるプライベート・ショートモジュールにする必要があります。
つまり標準モジュールでは作成しないという事です。
ですので標準モジュールではなく当該シートのワークシートにVBAコードを記述します。
作り方
マクロ作成画面を開きます。 「ALTキー」 + 「F11」
コードは以下の通りとなります。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("D1,A2")) Is Nothing Then
Application.EnableEvents = False
Call 試験日カウント更新
Application.EnableEvents = True
End If
End Sub
Private Sub 試験日カウント更新()
Dim 試験日 As Date
Dim 表示日 As Date
Dim 残日数 As Long
Dim 行 As Long
Dim メッセージ As String
Dim 対象セル As Range
If Not IsDate(Me.Range("D1").Value) Then Exit Sub
試験日 = Me.Range("D1").Value
For 行 = 4 To 35
If IsDate(Me.Cells(行, "B").Value) Then
表示日 = Me.Cells(行, "B").Value
Set 対象セル = Me.Cells(行, "E")
残日数 = DateDiff("d", 表示日, 試験日)
With 対象セル
.Font.Color = vbBlack
.Font.Bold = False
If 残日数 < 0 Then .Value = "試験は終了しました" ElseIf 残日数 = 0 Then .Value = "本日が試験日です" .Font.Color = vbBlue .Font.Bold = True Else メッセージ = "試験まであと " & 残日数 & " 日です" .Value = メッセージ .Font.Color = vbBlack .Font.Bold = False ' 数字部分だけ 赤字+太字 Dim pos As Integer pos = InStr(.Value, CStr(残日数)) If pos > 0 Then
On Error Resume Next
With .Characters(pos, Len(CStr(残日数))).Font
.Color = vbRed
.Bold = True
End With
On Error GoTo 0
End If
End If
End With
End If
Next 行
End Sub
このVBAはプライベート・ショートモジュールとなりますので標準モジュールのようにマクロ一覧には載りません!
まとめ
いかがだったでしょうか。
説明が長くなりましたが、作り方は自分でカスタマイズする人以外は別に読み飛ばしてもらってもかまいません。
要はこのようにして作りましたという解説図なだけですので、単に使い方はダウンロードだけして使っていただけばと思いますし、更に自分用に改造したい方は解説図をみて手直ししていただければと思います。
(私もそこまでVBAが得意ではありませんので、ご指摘があれば)
尚ダウンロードは自由ですし、2次配布も自由です。