天気晴朗なれども奈美高志くん

げーむしたり、ツクったり、げーむしたり。


西暦を入力するだけで、曜日を自動計算する

 

結構長いので、目次です

 

 

 

 

0.イントロダクション  

 

 カレンダーと言えば、年末になると付き合いのある

銀行や表具店、電気屋さんなどから貰ったりするわけだが、

そういったカレンダーって広告だったり、必要のない情報が

入ってるので、結局自分は使わなかったりする。

そういうわけで、毎年作るのもめんどいのも

あるので、表題の機能付きカレンダーを

自分で作ってしまってます。

毎年西暦だけ変えて印刷するだけでおkなやつ

詳細な機能としては

 

西暦を入力すると

1.その年の曜日を計算する

2.その月ではない日付はグレー表示する

3.国民の祝日を読み込むと、自動で赤字表示する

4.国民の祝日を読み込むと、自動で祝日名を表示する

 

主な機能はこんなとこ。

 ここでいきなり高機能のカレンダーを作り方を

伝えても、アワアワしちゃうと思うので、

まずは機能1.と2.だけを使って

よくある年カレンダー、出勤カレンダーを

作りましょうか。

A4一枚に入るのでコンパクト!

 

使うソフトはもちろんExcel

・・・と言いたいところだが、近年のExcel

価格が高いわりに自分には使いにくく感じていたので、

今は無料の「OpenOffice」の Calc を使っています。

関数などはほとんど同じなので問題なし

 

1.作業領域を極める 

 

  ではさっそくやっていきましょう!

 

まずは作業領域、外枠を極めてしまいましょう。

ヨコ3xタテ4の年カレンダーにするので

列は

週7日x3+月と月の間のスペース2で

23列。すべて中央揃えにします。

列幅は1cmくらい

 

f:id:ordix:20200501101243j:plain

 

 行は

年表示+スペース+(月表示+曜日表示+6行)x4

+月と月の間のスペース3で

37行。

行の高さはいじらなくておk

 

f:id:ordix:20200501200247j:plain
 

罫線は付けなくていいと思われ。 

 

2.曜日計算の下準備

 

 それでは、曜日計算のための下準備を作ります。

先頭月の月表示の右、「Sat」の一つ上のセル

(サンプルではセルG3)に

 

 =DATE($L$1;D3;1)

 

と入力し、セルの書式設定(Ctrl+1)で

分類を「日付」、書式コードを「M/D」とします。

 

f:id:ordix:20200501192534j:plain


フォント効果タブに移り、フォントの色を「白」にします。

(表示させる必要が無いので)

終わったら、すべての月の同じ位置関係のセル

(「Sat」の一つ上のセル)にコピペしておきましょう。

 

 上記の数式(=DATE($L$1;D3;1))の解説ですが、

DATE関数で西暦表示セル(L1)から西暦年(2020)を、

月表示セル(D3)から月(4)を読み、

初日の1を指定しているだけです。

「$」は絶対セルを表します。 

通常はコピペするとセルも移動した分変化しますが、

「$」を付けると変化しません。

年表示は1箇所で、変わっちゃったら困るからね。

この数式は次の段落で使用します。 

 

3.曜日計算

 

 それでは、このカレンダー作成のキモ、

曜日計算をします。

先頭月の日付エリアの左上端、「Sun」の一つ下のセル

(サンプルではセルA5)に

 

 =G3-WEEKDAY(G3)+1

 

と入力し、セルの書式設定(Ctrl+1)で

分類を「日付」、書式コードを「D」とします。

 

f:id:ordix:20200501201429j:plain

 

ついでに全日付エリアを選択して、

同じようにセルの書式設定を変更しておきましょう。

 

f:id:ordix:20200501204624j:plain

 

 表計算ソフトで、日付にはシリアル値というものがあり、

大昔の起点日からの経過日数が格納されています。

 そしてWEEKDAY関数ですが、これはまさに

曜日を計算する関数で、上記の数式で言うと

G3(2020/04/01)の曜日を、1から7の整数で返します。

1が日曜日、2…月、3...火、、、7...土 となります。

 2020年4月1日は水曜日なので、4が返ります。

 上記の数式(=G3-WEEKDAY(G3)+1)は、

 

G3(2020/04/01)のシリアル値から、

4を引いて(2020/03/28。水曜から4日前なので土曜)

(日曜に表示したいので)1を足す 

 

ということをしているのです。

 

4.ここは楽

 

 ここまできたら、あとは比較的楽です。

カレンダーにそって、 A5から1ずつ足していくだけです。

f:id:ordix:20200501213238j:plain

f:id:ordix:20200501213255j:plain

 

5.条件付き書式

 

 6行分カレンダーに入力したら、

その月ではない日付になる可能性のある部分に、

条件付き書式を設定していきます。

具体的に言うと、カレンダーの第1週、5週、6週です。

(月の最小日数が28なので、4週までは絶対に埋まります)

まずはセルA5を選択して、

書式>条件付き書式設定 を選択。

 

数式が MONTH(A5)<>$D$3

 

f:id:ordix:20200501220331j:plain

 

と入力し、「新しいスタイル」を選択。

管理タブで名前に「条件付き白」とでも設定

フォント効果タブに移り、フォントの色を「灰色2」くらいに

しておきます。

f:id:ordix:20200501221119j:plain

この辺はお好みで。当月以外の日付をまったく表示させなくて

いいのなら、フォントの色は「白」でおkです。

 

確定するとA5のフォント色が変わります。

(4月ではなく3月の日付なので)

あとはセルA5をコピーし、上で説明した該当部分、

第1週、5週、6週を選択して

「形式を選択して貼り付け」(Ctrl+Shift+V)を選び

「書式」のみチェック、他のチェックは外して貼り付けます。

 

f:id:ordix:20200501222741j:plain

 

するとA5で設定した条件付き書式の設定のみが

貼り付けされます。

 

f:id:ordix:20200501223217j:plain

 

 一応、上記の数式(MONTH(A5)<>$D$3)の解説です。

A5(2020/3/29)の月を読み、D3(4)と比較し

合致しないときのみセルスタイルを変更する。

<>はいわゆる不等号、否定等号≠と同じ意味合いです。

 

6.あとはコピペ

 

 あとは残り11か月分、基本コピペです。

 

2.で当月の初日を設定する

(コピペ。年をまたぐ部分だけ要調整)

3.で曜日計算をする

(コピペ)

4.でカレンダーを作る

(コピペ)

5.で条件付き書式設定をする

(1つ目のセルだけ要変更。あとは書式コピペ)

 

7.自分好みに

 

最後に、土日の色を変えたり、

GW、盆休み、年末年始など

休日の色を変えたりすれば

西暦を入力するだけで、曜日を自動計算するカレンダー

のできあがりです。

お疲れさまでした。

 

f:id:ordix:20200501232934j:plain