SYUNDOファイル

お役に立てればうれしいです。

万年カレンダー

エクセルで万年カレンダーを作りました。

投稿日:2022年9月4日 更新日:

エクセルで万年カレンダーの作成を調べましたがあってもほとんど祝日くらいまでです。
そこで旧暦や六曜、二十四節気、雑節を含む万年カレンダーを作成しました。
(範囲は2010年~2050年までです。)
その手順を紹介します。

用意するもの

旧暦と六曜一覧
祝日一覧
二十四節気計算表
雑節一覧

旧暦は、計算がかなり難しいので一覧表を作りました。
六曜は、旧暦があれば計算できます。

旧暦の月と日を足して6で割った余りで出します。
余りが0=大安、1=赤口、2=先勝、3=友引、4=先負、5=仏滅

祝日一覧はネットで探せばあります。

二十四節気計算は略算式で計算します。

二十四節気の略算式
http://addinbox.sakura.ne.jp/sekki24_topic.htm

を利用させていただきました。

雑節一覧は、調べて作成しました。

練習用シートを用意しました。(範囲2010年~2050年)
バージョンExcel2021
【練習用シート】ダウンロード(zip) 【シート説明】

はじめに

旧暦と六曜一覧、祝日一覧、二十四節気計算表、雑節一覧を
エクセルのシートにそれぞれを置きます。

作り方

万年カレンダーシートに作ります。

年と月を入れる
年のところに数字を入力した時に○○○○年と表示させる方法こちら(別ウインドウで開きます)

■当月の年と月を自動にしたい場合は
年のところ
=YEAR(TODAY())
月のところ
=MONTH(TODAY())

年と月が日付表示で〇〇〇〇/〇〇/〇〇になる場合は、セルの書式設定で標準にしてください。


     ⇩    ⇩    ⇩    ⇩

1行開けて曜日を入れる
曜日を簡単に入力する方法→こちら
4行目に1~7の数字をいれる
H5から0、7、14、21、28、35を入れる
セルA5に「=FLOOR(DATE($A$1,$B$1,0),7)+A$4+$H5」と入力する

「=FLOOR(DATE($A$1,$B$1,0),7)+A$4+$H5」の式の説明
■FLOOR関数

「基準値の倍数に最も近い値で切り捨てする」関数

=FLOOR(数値,基準値)

■DATE関数

DATE関数は日付を求めることができます。

=DATE(年,月,日)

日=0(ゼロ)にすると前月末日の日付になります。

■「=FLOOR(DATE($A$1,$B$1,0),7)+A$4+$H5」

DATE($A$1,$B$1,0)

○○年○○月0(ゼロ)日=前月末の日付

FLOOR関数で前月末の日付のシリアル値を7で割り、余りを切り捨てる

すると先週の土曜日の日付になる。

+A$4
4行の数字を足すと
+1が日曜日
+2が月曜日
+3が火曜日
+4が水曜日
+5が木曜日
+6が金曜日
+7が土曜日
となる。

+$H5
列Hで各週ごとに+7日している。
1週目は+0日
2週目は+7日
3週目は+14日
4週目は+21日
5週目は+28日
6週目は+35日

 
書式設定を日付に変更
右クリック→セルの書式設定

 

ユーザー定義→種類を「d」に変える→OK

 

A5からG10までコピー貼り付けする【やり方】
 
 

【曜日を月曜スタートにする場合】
【曜日を月曜スタートにする場合】

4行目に2~7の数字を入れ、日曜日には1を入れる。
月曜日から土曜日まで
セルA5に「=FLOOR(DATE($A$1,$B$1,0),7)+A$4+$H5」と入力する
セルA5~F10までA5をコピー貼り付け

日曜日の列には
セルG5に「=FLOOR(DATE($A$1,$B$1,0),7)+G$4+$H5+7」と「+7」を付け足す。
セルG6~G10までG5をコピーし貼り付け
 

A2に「=MONTH(A5)」と入力してG2までコピー、貼り付け
A11に「=MONTH(A9)」と入力してG12までコピー、貼り付け

※ここまでで年と月を変えれば日が変わります。
試に年と月を変えてみてください。
ちゃんと変わればここまでは成功です。
次に進んでください。

見た目を整える(レイアウト)

■表の間隔を文字幅に合わせます。【やり方】

 
■文字の大きさを少し調整します。【やり方】

 
年と月を選択して文字サイズを20
曜日を選択して文字サイズを18
日付を選択して文字サイズを20

■日曜日の列を赤字、土曜日の列を青字にします。【やり方】

 
六曜、旧暦、祝日、二十四節気、雑節を挿入するスペースを開ける。

列に一列づつ、行の日付の下に三行づつスペースを開ける

【スペースを入れる方法】

ついでに年と月調整しておきます。
月の1を切り取りしてセルD1に貼り付け(コピーではない)
年をセルA1からA3までセルの結合、月をセルD1とD2をセルの結合します。
年と月が表示されるようにします。
スペースを開けた行の高さを18ピクセルにします。

 
VLOOKUP

六曜の挿入

B5(日付の右側)に六曜を挿入します。
数式「=”旧暦”&(VLOOKUP(B5,旧暦!$A$1:$B$18629,2,FALSE))」

B5をクリックして「関数の挿入」ボタンをクリック

 

「関数の挿入」ダイアログボックスが開きます。
こういったウインドウを「ダイアログボックス」といいます。

 

開いた時は「最近使用した関数」になっています。
ここに「VLOOKUP」がなければ

「すべて表示」に変えます。

 
「VLOOKUP」をクリック

 
「関数の引数」ダイアログボックスが開きます。

 

検索値・・・○○日に対する項目を挿入したい場合の○○日

例えば、
12月27日に対する六曜を入れたいので検索値は「12月27日(カレンダーでは27)」になります。
ダイアロボックを開いた状態で27(A5)をクリックする。
27はセル「A5」なので「関数の挿入」ダイアログボックスにはA5と表示されます。

範囲・・・挿入したいデーターの範囲

範囲の数式ボックスをクリックして「旧暦」タブをクリック

2行目から1番下までドラッグして範囲指定します。

 
範囲の数式ボックスに「旧暦!A2:G18629」と表示されます。
「$」を付け足し「旧暦!$A$2:$G$18629」にします。
【「$]を入れる意味】

列番号・・・範囲指定した表で挿入する文字が左から何列目の何

 
範囲指定した表で六曜は左から6列目にあるので「6」と入力
赤丸のところに六曜が表示されていれば成功です。

 
検索方法・・・TRUE(近似一致)かFALSE(完全一致)を入力します。
ここでは後でします。

「OK」ボタン

文字の大きさを「10」色を「自動」変え、下揃えにします。

数式にFALSE(完全一致)を付け足します。

数式バーの数式の最後の「)」の前をクリック。

「6」と「)」の間に「,(半角コンマ)」を入れる

「FALSE-完全一致」をダブルクリック

「Emter」キー

日付の右側に全てコピー貼り付け

これで六曜の挿入は完了です。

次は祝日の挿入です。次へ


スポンサーリンク

-万年カレンダー

執筆者:


  1. たか より:

    質問でもよろしいでしょうか。
    日曜スタートのカレンダーを月日曜スタートのカレンダーにしたいのですが、
    どうすれば良いか解りませんでした・・・
    初歩的な質問で申し訳無いのですが、宜しくご教授願います。

    • syundo より:

      遅くなってすみません。
      月曜日スタートするには
      初めの曜日の下の行(4行目)に数字を1~7の数字を入れます。
      そこを頭(セルA4)を2から始め日曜日の下を1にすればできます。

      月曜スタート

      • あず より:

        ヨコレス失礼いたします。
        カレンダーづくり、とても参考になっています。こんなに丁寧にUPしていただき、ありがとうございます。感謝いたします。

        一つ教えていただきたいのですが、上記のように月曜スタートにする際に、4行目の数字を動かすと、日曜日の部分が1週間遅れて表示されてしまいますが、これを直す方法はございますでしょうか?
        お手すきの際に、教えていただけると幸いです。

        • syundo より:

          返事遅くなってすみません。

          日曜の列のみ+7としてください。
          セルG5「=FLOOR(DATE($A$1,$B$1,0),7)+G$4+$H5+7」

          前回の時に足らなくてすみませんでした。

          • あず より:

            ご回答いただきありがとうございます。
            できました!
            助かりました🎵

  2. 林 美聡 より:

    質問でもよろしいでしょうか。
    月齢カレンダーのD列の数式を参考に打ち込みましたが、下弦の表示が出てこないのはなぜでしょうか。
    2020年を作成すると9月から十三夜がたくさん表示されて、11月に#REFになります。
    年が変わると数式も変化するのでしょうか。

    • syundo より:

      大変遅くなってすみません。
      言い訳になりますが、暫くサイトを放置しておりました。
      先日(2019/9/18)、開いてご指摘があり急いで調べて見ました。
      確かに紹介している数式では、おっしゃるようにエラーが発生しました。

      調べて見るとMATCH関数は、順番に数字が並んでないとうまく抽出できないバグがあることが分かりました。
      そこで数式を次のように変更しました。
      数式(セルD44)
      【=IF(C44=(SMALL($C$44:$C$74,1)),”新月”,IF(E44=(SMALL($E$44:$E$74,1)),”三日月”,IF(C44=(SMALL($C$44:$C$74,COUNTIF($C$44:$C$74,”<=90")+1)),"上弦",IF(C44=(INDEX($C$44:$C$74,MATCH(MIN(ABS($C$44:$C$73-155)),ABS($C$44:$C$73-155),0))),"十三夜",IF(C44=(INDEX($C$44:$C$74,MATCH(MIN(ABS($C$44:$C$73-167)),ABS($C$44:$C$73-167),0))),"十四夜",IF(C44=(SMALL($C$44:$C$74,COUNTIF($C$44:$C$74,"<=180")+1)),"満月",IF(C44=(INDEX($C$44:$C$74,MATCH(180,$C$44:$C$74)+2)),"十六夜",IF(C44=(INDEX($C$44:$C$74,MATCH(MIN(ABS($C$44:$C$73-205)),ABS($C$44:$C$73-205),0))),"十七夜",IF(C44=(INDEX($C$44:$C$74,MATCH(MIN(ABS($C$44:$C$73-220)),ABS($C$44:$C$73-220),0))),"十八夜",IF(AND(C43<270,C44>=270),"下弦",IF(F44=(INDEX($C$44:$C$74,MATCH(MIN(ABS($C$44:$C$73-320)),ABS($C$44:$C$73-320),0))),"二十六夜",IF(C44=(INDEX($C$44:$C$74,MATCH(MIN(ABS($C$44:$C$73-350)),ABS($C$44:$C$73-350),0))),"晦日",""))))))))))))】
      ※カーソルを一番後ろに持っていきCtrl+shiftキーを押しながらEnterキーを押して下さい。

      参考になれば幸いです。

      【追記(2020/7/29】
      下弦が間違っていたので訂正しました。

      また、不具合あればコメントしていただければ嬉しいです。
      ありがとうございました。

  3. rin より:

    こんにちは。
    2020年以降の旧暦(六曜)シートはダウンロードできないのでしょうか?

    • syundo より:

      大変遅くなりごめんなさい。

      万年カレンダーをクリックしてください。

      2050年までの万年カレンダー(エクセル)がダウンロードされます。
      その中に2050年までの旧暦シートがあります。

comment

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

エクセルで万年カレンダー作成(3)レイアウトの調整

  エクセルで万年カレンダー作成(1) エクセルで万年カレンダー作成(2) エクセルで万年カレンダー作成(1)(2)で祝日、六曜、旧暦、二十四節気、雑用が表示されるようになり万年カレンダーは …

万年カレンダー一覧表の説明

  万年カレンダーに使用している一覧表の説明です。 万年カレンダーシート 万年カレンダーを作成するためのシートです。 「2023」とだけ入力しています。 これは「二十四節気」シートの年と関連 …

エクセルで万年カレンダー作成(2)

(エクセルで万年カレンダー作成(1)) エクセルの万年カレンダー作成は、六曜、祝日、旧暦、二十四節気、雑節を含んでいます。 エクセルで万年カレンダー作成(1)では、準備編と六曜の挿入が終わりました。 …

エクセルで干支カレンダー(マクロ編)

エクセルのマクロでユーザー定義関数を作成して万年干支カレンダーを作成しました。 干支は、新暦、旧暦、節切りの三種類求めることができます。 スポンサーリンク 新暦、旧暦、節切りの簡単な説明 新暦 新暦は …

エクセルで月齢カレンダー

エクセルで月齢カレンダーを作成しました。 年と月を変えると長期間使えます。 月齢は、ユーザー定義関数を作成して求めています。 ユーザー定義関数とは、マクロで自分でオリジナルな関数を作ることです。 詳し …

カテゴリー