いろいろな関数 縦型の万年?暦を作る

主な項目
1.Sheet1枚で30年暦を作る試み
2.カレンダーを作る(通称:万年カレンダー)

[MOD]関数を使って閏年2月29日を設定する(続:画像編)

前ページ上段をコピーして、Excel[A1]セルに貼り付けてください。シート名を「月別」にしてください。
下段をコピーしてSheet2[A1]セルに貼り付け、シート名を2月にしてください。他の月は29日の[MOD]関数をはずします。 そうして、[=TEXT(DATE($A$1,$A$2,セル番地),"aaa")]と入力します。
その上で、設定することがあリます。

年リストのデータを範囲を決めます。

  1. 月別シートを選択。右端の2008(になっていますが、全てです。)〜2036まで選択し、名前を定義します。
    名前の定義には、名前ボックス▼をクリックして、「年リスト」と入力します。そうして、[Ctrl+Enter]キーで確定します。
    「ドロップダウンリスト」を設定します(年リストがドロップダウンリストで表示させるためです。)
    入力規則を設定します。
  2. 月別シートの[F1]セルを選択しておいて、メニューバー「データ」から入力規則をクリックします。
    入力規則のダイアログボックスが表示されます。
  3. 入力値の種類(A)で[リスト]を選択、元の値(S)に[=年リスト]と入力します。「=」は半角です。
    次は、別なシートの操作になります。
  4. 2月のシートを開いてください
  5. 2008をクリック
  6. 数式バーに2008と表示されますが、それを消して「 =月別!F1 」(「ドロップダウンリスト」を作成したセル番地で、 リストの最上部です。)と入力してください。

    ***訂正とお詫び***上の行で、「 =F1 」で記入したのは誤りです。「Sheet」を跨いで参照するには、「 =月別!F1 」の形です。 これで、Sheet1である月別の[F1]セルの「ドロップダウンリスト」とSheet2の2月の[A1]セルとの関係が保たれました。
    操作方法

  7. 月別シートの[F1]セルの「ドロップダウンリスト」の▼をクリックします。
  8. 開いた「ドロップダウンリスト」の中から任意の西暦年を選択します。
    (あくまでも[F1]セルのドロップダウンリスト」の中からです。F列の縦長の年ではありません。)
  9. Sheet1月別でいろいろの年を選び、Sheet2の2月のシートを開いて、29日の有無を確かめてください。
  10. [MOD関数]の効果がお分かりになることと思います。

上の例では、月を2月に限って作りましたが、同表をコピーして、他の月も作ります。

Sheet1〜13まで使用すると、1〜12月までの暦が完成します。「月別」シートの年号をオートフィルすれば、400年に1日の暦の補正をする年まで使用できます。
このページは、2004年1,2、4月と2005年7月の画像です。(2005年7月18日作成ー訂正7月25日)

 

  

Sheet1枚で30年暦を作る試み

上述では、sheet13枚を使用して、作りましが、何とか1枚で出来ないものかと模索した結果、纏まりました。 ただし、2月と大の月、小の月の後に余分の日にちが書き込まれています。消去法を模索中です。

前日模索中と書きましたが、まる、2日を費やして纏めました。インターネットでいくら探しても見当たりませんので、[IF]関数をネスト、ネストの初歩的手法で解決しました。

問題になるのは、29(閏月の判別と以後の日の消去)、30小の月の判別と以後の日の消去、31日(大の月の記述)です。
29日:=IF(OR($E$2=1,$E$2=3,$E$2=4,$E$2=5,$E$2=6,$E$2=7,$E$2=8,$E$2=9,$E$2=10,$E$2=11,$E$2=12,$E$2=13),A31+1,IF(MOD($C$2,4)=0,A31+1,""))
30日:=IF(OR($E$2=1,$E$2=3,$E$2=4,$E$2=5,$E$2=6,$E$2=7,$E$2=8,$E$2=9,$E$2=10,$E$2=11,$E$2=12,$E$2=13),A32+1,IF(MOD($C$2,4)=0,"",IF($E$2=2,"",A32+1)))
31日:=IF(OR($E$2=4,$E$2=6,$E$2=9,$E$2=11),"",IF(OR($E$2=1,$E$2=3,$E$2=5,$E$2=7,$E$2=8,$E$2=10,$E$2=12,$E$2=13),B33+1,IF(MOD($C$2,4)=0,"",IF($E$2=2,"",A33+1))))

下段の表をコピーして、EXCELに貼り付けると上の関数が表示されます。

もっと、効率的な関数があるかと思いますが、ネットでは見当たりませんので、試行錯誤を重ねて纏めました。 20日掲載の表では、閏月を28日としましたが、間違いです。実行された方御免なさい。お詫びいたします。 この経験を生かして、7曜こよみ(縦型でない)に挑戦したいとも思っています。 この、こよみの年号をオートフィルすれば、400年に1日の暦の補正をする年まで使用できます。 また、お遊びで月数を13月までとりましたが、翌年の1月が表示されます。下図月リスト「13」がそれです。

カレンダーを作る(通称:万年カレンダー)

下表をコピーして、EXCELのA1セルに貼り付けて、ご使用ください。ただし、Excel表をWeb化したため、 設定が解除されたところがあります。最下段の注意書き手順で解決します。
関数の埋め込みは、そのまま生きています。
さらに、曜日の色付けが消されています。2004年の1月に「条件付書式」で土、日の色を付けてください。 1っ箇所設定すれは全部に適用されます。
なお、A列には、「DATE関数」で日付を取得するためのダミーの連番1〜31まで入力し、隠してあります。

西暦 2005 5 月のカレンダー
日付 曜日 干支 天気 記  事
1 1日       2005 5
2 2日       2004 1
3 3日       2005 2
4 4日       2006 3
5 5日       2007 4
6 6日       2008 5
7 7日       2009 6
8 8日       2010 7
9 9日       2011 8
10 10日       2012 9
11 11日       2013 10
12 12日       2014 11
13 13日       2015 12
14 14日       2016 13
15 15日       2017
16 16日       2018
17 17日       2019
18 18日       2020
19 19日       2021
20 20日       2022
21 21日       2023
22 22日       2024
23 23日       2025
24 24日       2026
25 25日       2027
26 26日       2028
27 27日       2029
28 28日       2030
29 29日       2031
30 30日       2032
31 31日       2033


注意
EXCELフアイルをWEB化したために、年別と月別のフィルタ機能が壊れています。 ダウンロードしたフアイルに下記の修正を施してください。

XPの場合です。

  1. [G3]を選択して、名前を定義します。名前ボックスに[年別]と記入します。
    G3を選択したときに、名前ボックスに[年別]と表示されれば、OKです。
  2. 同様に[H3]を選択し、名前ボックスに[月別]と記入します。
    [H3]を選択したとき、名前ボックスに[月別]と表示されれば、OKです。
  3. 西暦○○年○○月のカレンダーの、○○の表示をセル[G3]と[H3]から求めます。
    年表示の○○の[C1]を選択し、[=G3] と記入。  (すべて半角英数字)
    月表示の○○の[E1]を選択し、[=H3]と記入。
  4. 入力規則を設定します。
    1. [G3]を選択→[データ(D)]メニュー →[入力規則(L)]をクリックします。
      ([データ入力規則]ダイアログボックスが表示されます。)
    2. [入力値の種類]の▼をクリックして、[リスト]を選択します。
    3. [元の値]のテキストボックスには、[年別]と記入します。
    4. ここで、年別の範囲を求めてくれば、[$G$4]から[$G$33]を選択します。そうしてOKです。
    5. [年別]を記入して、途切れてしまった場合は、
      再度[G3]を選択して、4の 3)までを繰り返し、[$G$5]から[$G$33]を選択してOKです。
  5. 月別の設定は、セル[H3]を選択して、年別の場合と同じ手順で行います。
  6. その他土曜日の青色、日曜日の赤色も消えています、[条件付書式設定]着色願います。

VISTAの場合
[データ]タブ→データツールグッループの中の[データ入力規則]をクリックして、XPと同じ手順です。


トップページへ戻る     ページのトップへ     EXCEL関数特集-総目次へ   いろいろな関数9へ進む

inserted by FC2 system