エクセル関数でスケジュール自動表示のためのカレンダーを作成する方法


エクセルVBAでカレンダー自動作成
みなさん、こんにちは!
フジタニ(@libartweb)です。

エクセルVBAとWORKDAY関数を組み合わせたスケジュール表自動作成の方法をシリーズでお伝えしております。

前回の記事はこちら

エクセル関数だけで営業日を考慮した月間スケジュールを作成する方法
エクセル関数だけで営業日を考慮し、月間スケジュールを作成する方法をお伝えします。想定されるよくある日付パターンを、VBAを使用せずエクセル関数だけで計算。スケジュールリストを自動で作成します。

エクセル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(値, 表示形式)

TEXT関数は値を指定した表示形式に変換して返します。

値に日付、表示形式に”aaa”を指定することで、その日付の曜日を求めることが可能です。

ちなみに”aaa”だと月、火・・・と省略された形で表示されますが、”aaaa”にすると月曜日、火曜日・・・と完全な形で表示させることが可能です。

ここまでの設定で以下の通り、カレンダーのテンプレートとなるものができあがりました。

カレンダー

作成したテンプレートシートに、シートの保護をかける

ここまでエクセル関数の入力がすべて終わったら、作成したテンプレートシートに保護をかけましょう。

シートの保護をかけ、そのワークシートの編集ができなくします。

この先ずっと使う、カレンダーのテンプレートとなるシートなので、何らかの拍子に誤操作などでテンプレート内のエクセル関数などを壊してしまわないための対策です。

シートの保護は非常に簡単です。

シートの保護
①テンプレートシートのタブを右クリック

シートの保護
②シートの保護をクリック

以上で完了します。

エクセルVBAでシートの保護をかけたり解除したりできるので最初に保護をかけておけば、人間は意識せず、すべてエクセルVBAに任せられるので安全に運用できます。

詳細は以下の記事でも解説しています。

エクセルVBAによる運用業務で人為的ミスを減らす4つの方法
エクセルVBAを運用業務で活用されている方必見!人為的ミスを大幅に減らす4つの方法を紹介します。エクセルVBAはメイン処理に偏らず人為的ミスを想定したコーディングが業務効率化に繋がります。

まとめ

以上、エクセル関数をフル活用したカレンダーのテンプレートシートの作成方法をお伝えしました。

次回はそのテンプレートシートをエクセルVBAを使って対象月用に編集をかける処理を紹介します。

いよいよ本格的にエクセルVBAの解説に入ります。

どうぞお楽しみに!

連載目次:エクセルVBAで営業日を考慮したスケジュール表を自動で作成する

WORKDAY関数とエクセルVBAを組み合わせ、営業日を考慮したスケジュール表を自動作成する方法をお伝えします。 実務で使いこなすことができればとても便利なツールとして活用できるはずです!
  1. エクセルで営業日判定を実現するWORKDAY関数の使い方
  2. エクセルVBAとWORKDAY関数の組み合わせでスケジュール表を自動作成する最初の一歩
  3. エクセル関数だけで営業日を考慮した月間スケジュールを作成する方法
  4. エクセル関数でスケジュール自動表示のためのカレンダーを作成する方法
  5. エクセルVBAでテンプレートをコピーし翌月のカレンダーシートを生成する方法
  6. エクセルVBAでカレンダーシートに翌月の日付を反映させる方法

  投稿者プロフィール

フジタニ
フジタニLibArt代表
複業エンジニアとして「フリーランス」、「会社員」の2つの視点で業務効率化を提案。VBAによる自動化はもちろん、ビジネスチャットの推進(電話が大嫌い。)などを日々行っています。自転車が大好きな、走れるエンジニアです!

コメント