|
< 解 答 編 >
===================================================================
準備しているデータはこれ
↓
<問題編>はこのページ
<手順1>
A1は西暦の年 B1は月を表します。
A1とB1に名前をつけます。
ここでは、A1に[年]、B1に[月]としています。
A1には2006、B1には1 のデータを入力してありますね。
説明の都合上、A16にも[基準曜日]という名前をつけています。
(名前をつけるのは必須ではありません)
<手順2>
A16には、A1とB1で指定した年・月の1日が何曜日なのかを判定。
「基準曜日」 A16にいれる数式は
=WEEKDAY(DATE(年,月,1))
**数式を入力する流れ**
WEEKDAYの「シリアル値」にカーソルをおいたまま、
DATE関数を選びます。
一覧にない場合は、一番下「その他の関数」をクリックして選びます。
**数式の意味**
DATE関数は、指定した年月日のシリアル値を求める関数。
WEEKDAY関数を使って、そのシリアル値が何曜日になるかを求めます。
<手順3>
A4〜G8には、
「日」部分だけが表示されるように書式を設定します。
範囲選択 → 右クリック →セルの書式設定
表示形式 のシート 分類:ユーザー定義 種類:d
※日付の書式設定はここ
<手順4>
2006 と入力したら 2006年、
1 と入力したら 1月 となるように設定
A1 の 書式設定は 分類:ユーザー定義 種類:0年
B1は 種類:0月
(年を囲んでいる""は入力しなくても、勝手にはいります)
<手順5>
文字の色、サイズ、線などはお好みで。
<完成例>
<手順6>
A4に入れる数式は
=IF(基準曜日=A15,DATE(年,月,1),"")
**式の意味**
もし基準曜日(A16)がA15と等しかったら(つまり、日曜日だったら)
A4を2006年1月1日 とする。
もし2つの答えが等しくなかったら、A4は空白になる。
<手順7>
B4にいれる数式は、
=IF(基準曜日=B15,DATE(年,月,1),IF(A4="","",A4+1))
**式の意味**
もし基準曜日(A16)がB15と等しかったら(つまり、月曜日だったら)
B4を2006年1月1日 とする。
A16とB15の答えが違って、しかもA4にデータがなにもなかったら、
B4も空白のまま。
A4にデータがあれば、A4に1を加える(A4が1日だったら、B4は2日)
<手順8>
B4の数式をそのままG4まで複写します。
<手順9>
A5の数式は =G4+1
つまり、その直前の日に1を加えます。
<手順10>
B5の数式は、=A5+1
<手順11>
A5からG5までを範囲選択。
それを8行目まで数式をコピーしましょう。
これで、とりあえず完成!! さらに、もうひと手間!
<手順12>
最後の週、もし2月の1日、2日・・などが計算の結果表示されたら、
その部分の文字を見えなくしてみましょう。
B16の数式は
=DATE(年,月,1)
A8からG8まで範囲選択 → [書式]−[条件付き書式]
[セルが]を[数式が]に切り替えて、次のように入力します。
=MONTH(A8<>MONTH($B$16)
[書式]のボタンをクリックして、
フォントの色:白 にします
**式と書式設定の意味**
A8のデータの年月日から「月」のシリアル値を求め、それと
基準曜日 A16の 「月」のシリアル値を比較する。
その2つが等しくなければ (つまり、月が違えば)
文字の色を白くする。
※条件付書式についてはここも参考に
このカレンダーを別の月で利用するには、
B1のセルデータを変更します。
同じく、年を変更するならA1のセル
その時、数字のみ入力しないと数式がなりたたなくなります。
(2月なら 2 、3月なら 3だけ、つまり数値データとして入力)
範囲名を最初につけている場合は、
A1、B1のセル、というわけではないので、場所を移動することもできます。
この記事は、メルマガ26号で発行したものですが、
赤文字の部分を修正しています。
|