Home » Excel(エクセル)の関数・数式の使い方 » 日付計算 » カレンダーの作成方法−DATE・WEEKDAY関数

カレンダーの作成方法−DATE・WEEKDAY関数

対象:Excel2002, Excel2003, Excel2007

カレンダーの無料テンプレートネタは、特に年末、このサイトでアクセス数の増えるページです。

現在は2010年年間カレンダーの無料テンプレートネタに、結構なアクセスがあります。

カレンダーといえばこのサイトで
「Excel カレンダー 作成方法」
「エクセル カレンダー 作り方」
といった検索が行われていることがあります。

Excelでカレンダーを作成する方法を探している方の検索です。

[スポンサードリンク]

「カレンダー作成方法」「カレンダー作り方」といった検索を行った方が、どのようなExcelカレンダーを求めているのか、厳密なところはわかりませんが、せっかくExcelでカレンダーを作るのですから年と月を入力すると、入力した年月のカレンダーが自動的に表示されるようにしてみましょう。


▼操作手順:年・月を入力して該当する年月のボックス型カレンダーが表示されるようにする
※B2セルに年、B3セルに月を入力すると、B7:H12セルに日曜日からはじまるボックス型のカレンダーを表示する例

B6:H6セルに「1」から「7」の整数を入力
 ↓
B7セルに
「=B6-WEEKDAY(DATE($B$2,$B$3,0))」
という数式を入力
 ↓
B7セルをH7セルまでオートフィル
 ↓
B8セルに「=H7+1」という数式を入力
 ↓
C8セルに「=B8+1」という数式を入力
 ↓
C8セルをH8セルまでオートフィル
 ↓
B8:H8セルをB12:H12セルまでオートフィル

上記の操作を行うとボックス型のカレンダーの基本形ができあがります。

B8セルの「=H7+1」という数式、C8セルの「=B8+1」という数式については難しくないでしょう。前日の日付に「1」を加算することで翌日の日付を表示しています。

月曜から土曜の日付については、すぐ左隣のセルに「1」を加算すればOKです。これがC8セルに入力した「=B8+1」という数式の意味です。

ボックス型カレンダーですから、日曜の日付を取得する数式だけは隣のセルに「1」を加算するというわけにはいきません。前の週の土曜の日付に「1」を加算する必要があります。これがB8セルに入力した「=H7+1」という数式の意味です。

ポイントはカレンダーの1行目(上記の例ではB7:H7セル)の数式です。

カレンダー上の1日に該当するセルに「1」を表示するために
「=B6-WEEKDAY(DATE($B$2,$B$3,0))」
という数式を入力しています。

「WEEKDAY(DATE($B$2,$B$3,0))」というのは、B2セル・B3セルに入力した年・月の、前の月の末日「DATE($B$2,$B$3,0)」の、曜日番号を取得するという数式です。(DATE関数の第3引数を「0」にしているので、「DATE($B$2,$B$3,0)」は前月末日の日付になります。)

WEEKDAY関数では、第2引数の値によって、曜日ごとに以下のような値が返されます。今回は省略しているので一番上のパターンです。日曜が「1」、月曜が「2」、土曜が「7」という「1」から「7」の整数が取得できます。

第2引数の値 日曜 月曜 火曜 水曜 木曜 金曜 土曜
1または省略 1 2 3 4 5 6 7
2 7 1 2 3 4 5 6
3 6 0 1 2 3 4 5

指定された前の月の末日の曜日の数値を、B6:H6セルに入力した「1」から「7」の整数からマイナスしてやると、カレンダーの1日に該当する箇所がちょうど「1」となります。

(というか、そうなるように考えたのが、B6:H6セルに「1」から「7」の整数を入力しておいて、前の月の末日の曜日番号をマイナスする「=B6-WEEKDAY(DATE($B$2,$B$3,0))」という数式です。)

上記の手順でボックス型カレンダーの基本部分はできあがりです。

ただこのままでは、カレンダーとして不自然な数字、例えば、マイナスの数値や「0」、「32」以上の月の日付としてはありえない数値も並んでしまいます。

それらを何らかの方法で制御する必要があります。

IF関数を使って表示されないようにしてもいいですが、IF関数を使うとどうしても数式が複雑になってしまいます。

条件付き書式が使える方なら条件付き書式を利用するほうが、わかりやすいんじゃないかと私は思います。

カレンダーの1行目(上記の例ではB7:H7セル)については、「0」以下の数値のときに、文字をセルの背景色と同じにしてしまえば、マイナスの数値や「0」が表示されなくなります。

カレンダーの5行目・6行目(上記の例ではB11:H12セル)については、月末の日付より大きな数値のときに、文字をセルの背景色と同じにしてしまえば、マイナスの数値や「0」は表示されなくなります。

▼サンプルファイル(003592.xls 42KByte)ダウンロード

サンプルファイルの「基本」シートには上記の手順で作成したカレンダー、「条件付き書式設定済」シートには、条件付き書式などを設定したカレンダーを作成してあります。B7:H7セルやB11:H12セルにどのような条件付き書式が設定されているかなどもご確認ください。

「条件付き書式設定済」シートの、「1」〜「7」の整数を入力したB6:H6セルには「aaa」というユーザー定義書式を設定して「日」から「土」の曜日を表示させています。(「aaa」というユーザー定義書式を設定した関係で、例えばB6セルには「1900/1/1」という日付データが見えますが、そもそもExcelでは「1900/1/1」は「1」です。見た目がちょっと変わっているだけでデータ自体が変わってしまったわけではありません。)

「1行目の考え方」シートには、1行目の数式「=B6-WEEKDAY(DATE($B$2,$B$3,0))」の意味を考えてもらうための数式をB13:H14セルに入力してあります。

カレンダー作成のポイント「=B6-WEEKDAY(DATE($B$2,$B$3,0))」という数式の意味をしっかりご確認ください。

ボックス型カレンダーではなく、日付が1列に並んだ状態でよければ以下のようなネタをご参照ください。

[スポンサードリンク]

Home » Excel(エクセル)の関数・数式の使い方 » 日付計算 » カレンダーの作成方法−DATE・WEEKDAY関数

TrackBack:3

TrackBack URL
カレンダーの作成方法 from インストラクターのネタ帳
対象:Excel2002, Excel2003, Excel2007 DATE関数・WEEKDAY関数を組み合わせて、年・月を入力したときに該当する年...
WEEKDAY関数の機能アップ−Excel2010 from インストラクターのネタ帳
対象:Excel2010 先日「Excel Semi-Pro」というブログの「The WEEKDAY Functioin in Excel」という記事で...
曜日で条件分岐する-Weekday関数 from インストラクターのネタ帳
対象:Excel2003, Excel2007, Excel2010 VBA(Visual Basic for Applications)の、Forma...

Home » Excel(エクセル)の関数・数式の使い方 » 日付計算 » カレンダーの作成方法−DATE・WEEKDAY関数

「日付計算」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.