Excel(エクセル)関数でスケジュール表作成 その@ 日付を入力し、関数で自動的に計算して表示する。

スケジュールを作成するに当たり、開始日時と終了日時付近の日付をすべて表示しなければならない。開始日時、終了日時を入力して、自動で日付を表示する。

会社でスケジュールを組んでいるが、すぐに割り込みは入ってスケジュールが崩れ、スケジュールの建て直しに時間をかけている。

すでに立てたスケジュールを自動でずらして簡単にスケジュール表が作成できるようにする。

テンプレートは下記のように作成した。

スケジュール管理雛形V0.1.LZH

使っていくうちに修正しようと思う。

開始日時と終了日時を入れ、日付記入ボタンを押すと、M列から自動的にその間の日時が入るVBAプログラムを作成した。

Sub 日付()
Dim KikanDate As Long, EndDate As Long, StartDate As Long
EndDate = Cells(3, 8)
StartDate = Cells(3, 5)
KikanDate = EndDate - StartDate

For i = 0 To KikanDate - 1
Cells(5, 13 + i) = StartDate + i
Cells(5, 13 + i).NumberFormat = "d"

If Day(Cells(5, 13 + i)) = 1 Then
Cells(4, 13 + i) = Month(Cells(5, 13 + i))
Cells(4, 14 + i) = "月"
End If

Columns(13 + i).AutoFit

Next

End Sub

Cells(2, 5)に開始日時、Cells(2, 8)に終了日時を入れるのだが、シリアル値にしたいため、DimではLong(長整数型宣言)とした。

Integer(整数型宣言したら、オーバーフローのエラーメッセージが出た。範囲が-32,768 〜 32,767のため)。こちらを参照。

表示形式は日時設定としてある(文字列ではない)。

KikanDateには、終了日時から開始日時を引いた値が入り、日数が入る。

For 〜 Nextで日数分、M列から日付を入れる。

Cells(4, 13 + i) = myData2 + iで開始日時から1日ずつプラスして、次の列に日付を入れている。

Cells(4, 13 + i).NumberFormat = "d"で、表示形式を「日」のみとしている。値はシリアル値。

Format関数では文字列になってしまうので、うまくいかない。


If Day(Cells(4, 13 + i)) = 1 Then
Cells(3, 13 + i) = Month(Cells(4, 13 + i))
Cells(3, 14 + i) = "月"
End If

この部分は、1日の時だけ上の行に何月であるかを記載する。
Day(Cells(4, 13 + i))で何日かを出し、Month(Cells(4, 13 + i))で何月かを出す。

Columns(13 + i).AutoFitで列ごとに列幅を自動調整する。

次は曜日検索をして土日を省く作業だ。

忍者Admaxのテキスト広告で収入UP!

実践!ExcelデータベースTOP