Excelでスケジュール管理!永久に使える万年カレンダーを作ろう

スケジュール管理する上で、システム手帳やスマートフォンで管理している方は多いが、自分オリジナルのエクセルカレンダーも非常にオススメだ。

今回はエクセルで作る万年カレンダーの作り方を紹介する。

カレンダー作りに必要な基礎的な項目を説明するので、すぐにカレンダーとして活用できるようになる。

エクセルだと動作も早く仕様も細かく設定できるので、自分用にカスタマイズすると手放せなくなるほど便利な代物になるだろう。

 

<<万年カレンダーの作り方を動画で解説>>

 

カレンダーのレイアウト作成

まずはカレンダーのレイアウトから作っていこう。

  1. 上画像のようにセルB2には「年」、セルC2には「月」の入力欄を作る。
  2. セルA4に日曜日とし、セルG4を土曜日とする。
  3. 5行目を「日付欄」、6行目を「スケジュール入力欄」とするため、上画像のように2行毎に罫線を引くようにする。

ポイントは、上画像のように最多で6週分確保することだ。なぜ6週分必要なのかは後ほどその理由がわかる。

上画像ではスケジュール入力欄を1行としているが、記述量が多い人はもっと行数を増やしても良い。

 

関数を使って月初日とその曜日を求める

次はDATE関数WEEKDAY関数を使う。

関数に不慣れな方は、次に書く通り入力してもらえば大丈夫だ。

セルD2に=WEEKDAY(DATE(B2,C2,1))と入力する。

セルD2に「3」と表示されればOKだ。

 

一応、DATE関数とWEEKDAY関数について解説すると、この構文は以下のようにDATE関数をWEEKDAY関数で囲う「ネスト」構文になっている。

WEEKDAY関数は括弧の中にある日にちに該当する「曜日」を求める関数で、DATE関数は括弧の中にある「日にち」を求める関数だ。

スケジュールを自動計算するためにはどこかに起点を決める必要がある。

今回は2016年11月の月初、つまり1日を起点とするため、DATE関数の括弧には2016年11月1日である(B2,C2,1)と入力したわけだ。

 

そして、セルD2に「3」と表示されたと思うが、これはWEEKDAY関数では「火曜日」を意味する。

以下のように、WEEKDAY関数で求められた数字には対応する曜日が決まっている。

日:1
月:2
火:3
水:4
木:5
金:6
土:7

今回は「3」と表示されたが、「1」であれば日曜日、「7」であれば土曜日を意味する。

スケジュールを自動計算するために少し複雑な関数を使ったが、ここでは「3」表示されれば問題ない。

 

カレンダーの最初のセルの日付を求める

ここまでで「2016年11月1日」は「火曜日」であり、セルでいうとC5が「2016年11月1日」に該当することが分かった。

今度はこの情報を起点とし、セルA5の日付を求めていく。

 

結論から言うと、セルA5に以下の数式を入力する。

=DATE(B2,C2,1)-(D2-1)

 

構文の中身を説明すると「DATA関数上表示される2016年11月1日から(3-1)をする」ということなのだが、下の図解をみてもらうと分かり易い。

セルA5に該当する日曜日の日にちというのは、それぞれの月の1日から(D2-1)前に戻った位置にある。

「2016年11月」の例であれば、1日は火曜日(左から3番目)であり、日曜日は火曜日から2つ(3-1)前に戻ったところにセルA5がある。

つまり、セルA5は「その月の1日」から「(曜日の値)-1」日前にあるということになる。

これを数式にしたのが「=DATE(B2,C2,1)-(D2-1)」だ。

 

では、実際にセルA5 に数式を入れてみよう。

 

これでセルA5の日付は「2016年10月30日」だということを自動計算で表せた。

 

カレンダー全ての日付を求める

最初のセルの日付が分かれば、あとはもう簡単。

隣のセルB5は、A5に1を足した日付になるため、

=A5+1

と入力して、セルG5までコピペする。

 

 

カレンダー2週目のセルA7は行が変わるので、G5に1を足してG7までコピペする。

3週目以降は、2週目をコピペすれば全部のセルの日付が求められる。

 

 

これですべてのセルに日付を入れることができた。

試しに、年月を「2017年1月」に変更してみる。

 

 

ちゃんとカレンダーが自動で変わった。

 

セルの書式を編集する

見た目をカレンダーらしくするために書式の編集を行う。

 

日付は、yyyy/m/d の表示形式から「日にち」のみの表示にする。

日付の表示設定に「日にち」のみの表示種類がないため、ユーザー定義で設定する。

 

日付のセル範囲を選択して右クリックし、「セルの書式設定」「表示形式」「ユーザー定義」をクリックして、種類の入力欄に日にちを表す「d」を入力する。

 

 

OKボタンを押してみると、

 

 

日付表示が日にちのみになりこれでかなりとカレンダーっぽくなった。

 

次に、表示させたくないセルの文字色を白に設定する。

カレンダーの1、5、6週目は、前月と翌月の日付が混在する週のため、今月とは関係ない日付を条件付書式で白に設定して非表示にする。

 

1週目のセルA5~G5までは、月初日より小さい値であれば文字色を白に設定する。

上記の例だと、2016年11月1日より前の日付を白文字にする。

 

セルA5~G5までを選択して、ホームタブから「条件付き書式」「新しいルール」をクリックする。

 

 

新しいルールのダイアログボックスが開くので「指定の値を含むセルだけを書式設定」を選択する。

ルールの内容に「次の値より小さい」を選択、値の欄に「=DATE($B$2,$C$2,1)」と入力して、「書式」をクリックする。

セルの書式設定で、フォントの色を「白」に設定する。

 

 

複数のデータ範囲に固定セルを条件にする場合は「$マーク」で絶対参照にする必要があるため、ここは注意すること。

 

続いて、5、6週目も翌月以降の値を白表示にする。

先ほど同様の流れで「条件付き書式」から進み、ルールの内容を「次の値以上」を選択して「=DATE($B$2,$C$2+1,1)と入力する。

 

 

 

これでカレンダーの日付表示が1日から末日までになった。

 

スケジュール内容をマクロで削除させる

月が変わってもスケジュールがそのまま残ってしまうため削除する必要がある。

月ごとにシート分けすればよいですが、そのまま使うとなると削除するのは手間なので、ボタン一つで削除できるようにマクロを組むのが良い。

ただし、マクロの記述は難しいので削除する動作をエクセルに記憶させる簡単な方を紹介する。

 

まず、マクロを操作するためには「開発タブ」が表示されている必要がある。

見当たらない場合は、Excelのオプション設定で「リボンのユーザー設定」から「開発」にチェックを入れて。

 

 

開発タブのマクロの記録」をクリックするとダイアログボックスが開くので、任意のマクロ名を入力して「OK」をクリックする。

ここではマクロ名を「スケジュールの削除」とする。

 

 

「マクロの記録」が開始される。

Ctrlキーを押しながらスケジュール入力欄を全て選択して、Deleteキーを押す。

開発タブの「マクロの記録」を終了する。

 

 

これで、Excelがここまでの一連の操作を記憶してくれた。

 

では、このマクロを実行させるボタンを作ろう。

開発タブから「挿入」フォームコントロールの「ボタン」をクリックする。

 

 

マウスポインタが「+」になるので、任意の場所にドラッグしながらボタンを作成する。

マクロ登録のダイアログボックスが開くので、記憶させたマクロ「スケジュールの削除」を選択して「OK」をクリックする。

 

 

ボタン名を任意の名前に変更する。

ここでは「スケジュールの削除」とする。

ボタンをクリックして、入力したスケジュールを削除しよう。

 

 

スケジュール内容が削除された。

これで万年カレンダーの完成!

 

ちなみに、マクロを有効化するためにファイルはマクロ有効ブック(.xlsm)形式で保存することを忘れずに。

 

 

スポンサーリンク
スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です