みなさん、こんにちは!
フジタニ(@libartweb)です。
エクセルVBAとWORKDAY関数を組み合わせたスケジュール表自動作成の方法をシリーズでお伝えしております。
前回の記事はこちら
エクセルVBAを使用せず、エクセル関数を使用するだけで、ほとんどのスケジュールパターンは自動計算が可能であることをお伝えしました。
前回の記事でお伝えした便利な関数をフル活用して、スケジュールの日付を一覧に記載した「スケジュールリスト」ができあがっている前提で今回は解説を行っていきます。
スケジュールを一覧に記載することができたら、今度はそれをわかりやすいようにカレンダーに転記していく必要があります。
そのためには、転記先のカレンダーを作る必要があります。
今回紹介するのはカレンダー自動作成の一例です。まずはエクセル関数のみでテンプレートを作る方法の紹介です。カレンダーのレイアウトは様々なパターンが考えられると思いますので使いやすいように加工して記事の内容をご活用ください。
翌月分のカレンダーをテンプレートシートから作成する
カレンダーの内容は当然、月によって変動します。そのため、テンプレートとなるワークシートを作っておき、そのテンプレートを編集する形で翌月分のカレンダーを作成します。
まずは「テンプレート」という名前のワークシートを作成します。
(テンプレートであることがわかれば名前は何でもOKです)
できあがりのサンプルは以下の通り。
2018年10月分のカレンダーを作成する想定で、説明します。まずはエクセル関数だけでできるところまで作り込みます。
セル | 設定内容 |
---|---|
A1 | 作成したい月の初日(2018/10/1) |
B1 | =A1(書式設定で日付のみ表示) |
B2以降 | B列の上のセル+1(B2セルの場合は=B1+1、B3セルの場合は=B2+1これを31日分) |
C列 | =TEXT(B列,”aaa”) C2セルの場合は=TEXT(B2,”aaa”) |
わかりやすいように、エクセル関数を見えるようにすると以下の通りです。まずはこのようにエクセル関数を設定してください。
A1セルに開始日に書式を設定(月のみ表示)
A1セルはVBAで自動的にカレンダーの開始日となる日付を入力する領域です。
サンプルでは、2018年10月1日が入っており、書式設定で月のみを表示させています。
書式設定の方法は以下の通りです。
A1セルを選択した状態でユーザー定義→種類に m”月”と入力してOKを押下
これで実際には2018年10月1日とフルの日付が入っていますが、月のみが表示されるようになりました。
B列に書式設定(日のみ表示)
B列もA1セルと同様に実際は年、月、日のすべての情報が入っていますが、書式設定で日のみ表示するように設定しています。
設定方法は以下の通りです。
B列を選択した状態でユーザー定義→種類に d”日”と入力してOKを押下
これで日のみがB列に表示されます。
C列にTEXT関数で曜日を表示させる
TEXT関数は値を指定した表示形式に変換して返します。
値に日付、表示形式に”aaa”を指定することで、その日付の曜日を求めることが可能です。
ちなみに”aaa”だと月、火・・・と省略された形で表示されますが、”aaaa”にすると月曜日、火曜日・・・と完全な形で表示させることが可能です。
ここまでの設定で以下の通り、カレンダーのテンプレートとなるものができあがりました。
作成したテンプレートシートに、シートの保護をかける
ここまでエクセル関数の入力がすべて終わったら、作成したテンプレートシートに保護をかけましょう。
シートの保護をかけ、そのワークシートの編集ができなくします。
この先ずっと使う、カレンダーのテンプレートとなるシートなので、何らかの拍子に誤操作などでテンプレート内のエクセル関数などを壊してしまわないための対策です。
シートの保護は非常に簡単です。
以上で完了します。
エクセルVBAでシートの保護をかけたり解除したりできるので最初に保護をかけておけば、人間は意識せず、すべてエクセルVBAに任せられるので安全に運用できます。
詳細は以下の記事でも解説しています。
まとめ
以上、エクセル関数をフル活用したカレンダーのテンプレートシートの作成方法をお伝えしました。
次回はそのテンプレートシートをエクセルVBAを使って対象月用に編集をかける処理を紹介します。
いよいよ本格的にエクセルVBAの解説に入ります。
どうぞお楽しみに!
連載目次:エクセルVBAで営業日を考慮したスケジュール表を自動で作成する
WORKDAY関数とエクセルVBAを組み合わせ、営業日を考慮したスケジュール表を自動作成する方法をお伝えします。 実務で使いこなすことができればとても便利なツールとして活用できるはずです!- エクセルで営業日判定を実現するWORKDAY関数の使い方
- エクセルVBAとWORKDAY関数の組み合わせでスケジュール表を自動作成する最初の一歩
- エクセル関数だけで営業日を考慮した月間スケジュールを作成する方法
- エクセル関数でスケジュール自動表示のためのカレンダーを作成する方法
- エクセルVBAでテンプレートをコピーし翌月のカレンダーシートを生成する方法
- エクセルVBAでカレンダーシートに翌月の日付を反映させる方法
- エクセルVBAのFunctionプロシージャで祝日判定関数を自作する方法
- エクセルVBAでカレンダーシートの土日祝日の行に背景色をつける方法
- エクセルVBAでカレンダーシートに自動でタスクを表示する方法