| [Office Master] | |||||||||||||
Excelで万年カレンダーを作成する
|
|||||||||||||
|
|||||||||||||
| 解説 |
ちょっとしたスケジュール表やプロジェクトの管理表などを作成する際に、OutlookやProject(プロジェクト管理ソフトウェア)、そのほか専用のソフトウェアではなく、Excelで簡単に日程表を作成する、という機会は意外と少なくない。
そんなとき、定型的であるにもかかわらず、外枠であるカレンダー部分を作成するのは、実は意外と面倒臭い作業でもある。
そこで本稿では、任意の年月を設定しさえすれば、カレンダーのフォーマットを自動的に作成してくれるExcelテンプレートを作成してみよう。紙に印刷して使用するもよし、メモ欄を設けるなどして電子データ上で使用するもよし、用途に応じて業務、日常生活に役立ててほしい。
| 作成手順 |
手順1:カレンダーのテンプレートを作成する
まずはExcelを起動して、カレンダーのテンプレートを作成してみよう。
![]() |
||||||||||||
| 作成したカレンダーのテンプレート | ||||||||||||
| 左上に任意の年と月の数値を入力すると、その年月に対応したカレンダーが下側に自動的に表示されるようにする。 | ||||||||||||
|
曜日に対応した数値を「1〜7」の値で6行目にセットしてあるほかは、あまり特筆すべき点はない。上記のリンクから今回ご紹介するExcelシートのデータをダウンロードするか、ないしはご自分でデザインしたカレンダーのテンプレートを作成してみてほしい。
なお、6行目の数値は、あくまで後述の判定式で使用するだけで、ユーザーには関係のない情報であるので、行ごと非表示にしておくとよいだろう(左端にあるボタンをクリックして行全体を選択し、右クリックで表示されるショートカット・メニューの[非表示]を実行する)。
手順2:カレンダーの第1週目の数式を設定する
今回作成するカレンダー・フォーマットは、大きく1行目と2行目以降とで、埋め込まれる数式が異なる。まず1行目の関数を見てみよう。以下は、セルB7にセットされた関数式である(以下のリストでは、式が見やすいよう改行してあるが、実際には1行である)。
= IF(B$6>=WEEKDAY(DATE($B$2,$B$3,1)), |
DATE関数は、パラメータとして指定された年月日を表わすシリアル値を返す関数である。例えば、「DATE($B2,$B$3,1)」なら、ヘッダ部で指定された年月の月初の日(ついたち)を表わす($B2と$B$3はそれぞれ、前挙の画面の
と
に対応する)。こうして得られた値をWEEKDAY関数のパラメータに指定して呼び出すことで、指定月1日の曜日(1:日曜〜7:土曜)を取得する。
最初に考慮すべきポイントは、第1週の1日の曜日までを空欄にすることだ。
![]() |
|||
| 第1週の処理 | |||
| 月の第1週では、1日が始まる曜日までを空欄にしなければならない。これには、上記の式で得られた曜日(今回の例では5)の数値と6行目の数値(曜日表記の直下にある数値)を比較し、6行目の数値の方が小さいときには空欄にする。 | |||
|
上記の式で取得した曜日の数値が、6行目の値より小さい場合には、その月の1日には至っていないことを意味するので、その日の表示では空文字列を出力する。取得した曜日が6行目の値と等しければ、それがその月の1日にあたる日である。この1日を含め、第1週については、6行目の値からWEEKDAY関数の値を引いたものに1を加えることで、実際の日付を決定することができる。
少々分かりにくいかもしれないので、2003年5月のカレンダーを例に、1行目の数値の変化を見てみることにしよう。以下の表は、5月の第1週(カレンダーの1行目)の数値の変化を表したものである。
|
セル
|
セルの日付表示
|
6行目の値
|
6行目の値−WEEKDAY関数の戻り値
|
|
B7
|
非表示
|
1
|
-4
|
|
C7
|
非表示
|
2
|
-3
|
|
D7
|
非表示
|
3
|
-2
|
|
E7
|
非表示
|
4
|
-1
|
|
F7
|
1
|
5
|
0
|
|
G7
|
2
|
6
|
1
|
|
H7
|
3
|
7
|
2
|
|
|
|||
| 2003年5月第1週の式の値 | |||
2003年5月の場合には、「WEEKDAY(DATE($B$2,$B$3,1))」の値(2003/05/01の曜日番号)は「5=木曜」であるので、セルF7で初めて6行目の値と等しくなる。つまり、ここで「5−F6+1」を計算し、「1」という値が表示される。以降、金曜、土曜と「2」「3」が続いて表示される。
さて、カレンダーの第1週目が設定されてしまえば、あとは簡単だ。以下のようにセルを設定すればよい。
| 列 | 曜日 | 式 |
| B列 | 日 | =$Hn+1(n:前行の番号) |
| C〜H列 | 月〜土 | =Xm+1(X:左セルの列番号、m:現在行の番号) |
| 第2週目以降の処理 | ||
例えばセルB8には「=$H7+1」がセットされるし、セルC8には「=B8+1」がセットされる。C8をセットした後、その内容をD8〜H8にもコピーし、さらに8行目の内容を9〜12行目にまでコピーすれば、各セルに対する式の設定を簡単に行える。
手順3:月の最終日を検出する
以上で、ほぼカレンダーの体裁は整うのだが、残念ながらまだこれで終わりではない。
月の最終日は28〜31までの間であるが、現状のままでは、これ以降の数値(32日など)までも表示されてしまう。本サンプルでは、最終日以降の数値をExcelの[書式]−[条件付き書式]メニューを使用して、背景色と同化させることで非表示と同じ効果を実現している。
![]() |
| 月の末尾の処理 |
| 今回は、背景色と同じ色で日付の文字列を表示することで、実質的に非表示と同じ効果を実現してみた。画面は、12行目のセルを選択状態にして反転表示させたところ。日付の表示自体は行われているので、反転表示させると日付が見える。 |
これには、[書式]−[条件付き書式]メニューから表示される[条件付き書式の設定]ダイアログで次のように指定する。
![]() |
|||||||||
| 条件付き書式の設定 | |||||||||
| 月末を越える日については、背景と同じ色で日付を表示するようにする(今回の例では黄色)。 | |||||||||
|
条件式に入力された「=DAY(DATE($B$2,$B$3+1,0))」が大きなポイントだ。
「DATE($B$2,$B$3+1,0)」は、来月の0日の日付 ―― つまり、今月の最終日を求めている。DAY関数は引数に示された日付の日の部分だけを取り出すので、例えば、2003年5月の場合は31になるはずだ。
つまりここでは、31よりも数値が大きくなった場合に、文字色を背景色といっしょにすることで数値を非表示にしている。![]()
|
||||||||||||||||||||||||||||
| 「Windows TIPS」 |
ホワイトペーパー(TechTargetジャパン)
- 第207話 究極の人事システム (2010/2/9)
部長、わが人事部が開発した究極の人事評価システムがついに完成しました! これで不要な社員が一発で分かります! - WindowsTIPS (2010/2/5)
− netshコマンドでTCP/IPのパラメータを設定する
− Virtual PC 2007の共有NATで利用可能なアドレス範囲
− スタンバイ復帰でパスワード入力を要求されないように - 仮想環境でActive Directoryを利用する (2010/2/4)
仮想環境にADをインストールすれば、自由にActive Directoryドメイン・ネットワークを構築して実験できる - 第206話 バナー広告案 (2010/2/2)
いまどきWebマーケティングが不可欠なのは分かるが、強烈な競合に並べてバナーなんか出して、勝ち目はあるのか?
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |











