- ベストアンサー
1年間の日、祝祭日の合計日数の求め方
毎年の1年間の日曜と祝日のみの合計日数を求めたいのですが、そのような事は可能でしょうか? 可能であれば、どうやって求めて出したらよいのか教えて下さい。 わかりやすく教えて頂けると幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
例えば2011年、2012年、2013年に求めるのでしたらシート1のA1セルに2011、B1セルに2012、C1セルに2013のように入力します。 祝日についてはシート2に入力するとして例えばA1セルには2011、B1セルには2012、C1セルには2013のように入力します。 その後にA2セルから下方には2011年の祝日を2011/1/1のように下方に入力します。B2セルから下方には2012/1/1のように、C2セルから下方には2013/1/1のように入力します。 その後にシート1に戻ってB1セルには次の式を入力して右横方向にドラッグコピーします。 =IF(OR(A$1="",COUNTIF(Sheet2!$1:$1,A$1)=0),"",IF(WEEKDAY(DATE(A$1,1,1))=1,WEEKNUM(DATE(A$1,12,31)),WEEKNUM(DATE(A$1,12,31))-1)+SUMPRODUCT((INDEX(Sheet2!$A:$G,2,MATCH(A$1,Sheet2!$1:$1,0)):INDEX(Sheet2!$A:$G,30,MATCH(A$1,Sheet2!$1:$1,0))<>"")*(WEEKDAY(INDEX(Sheet2!$A:$G,2,MATCH(A$1,Sheet2!$1:$1,0)):INDEX(Sheet2!$A:$G,30,MATCH(A$1,Sheet2!$1:$1,0)))<>1)*1)) この式では例えばWEEKDAY関数を使って1月1日の曜日を求めその値が1の時はWEEKNUM関数でその年の年末までの週の数をそのまま日曜日の数として、また1以外の時は年末までの週の数から1を引くことでその年の日曜日の数としています。さらにシート2でその年における日曜日でない祝日の数をSUMPRODUCT関数を使って求めており、最終的には両者の数を加算して日曜日と祝日による合計を求めています。 シート1での1行目での西暦年とシート2での祝日のデータを入力しておくことでそれぞれの年における日曜日と日曜日以外の祝日の数をシート1の2行目に表示させることができます。
その他の回答 (2)
日本の祝日は年間で15日と16日になる年があります。又、日曜日は年間52日又は53日になりますので各々年間の日数を計算する必要があります。 1.祝日 祝日と祝日に挟まれた日は祝日となります。この条件が一致する可能性があるのが敬老の日と秋分の日になります。 敬老の日は月曜日に固定されていますので、秋分の日が水曜日であれば火曜日が祝日になります。秋分の日は年により祝日の日にちが変動しますので計算で日にちを計算する必要があります。 2.日曜日 閏年(366日/年)は元旦が日曜日又は土曜日の場合53日が日曜日。それ以外は52日が日曜日 365日/年の年は元旦が日曜日の場合のみ53日が日曜日、元旦が日曜日以外は52日 エクセルによる計算方法 下記添付図参照 B1に西暦入力 B2に年間日数関数=DATEDIF(DATE(B1,1,1),DATE(B1+1,1,1),"d") B1の元日と翌年の元旦の日数をを上記関数で求めている。 B3上記西暦の元日の曜日番号関数=WEEKDAY(DATE(B1,1,1)) 曜日番号は1が日曜日、2が月曜日・・・7が土曜日となります。 B4秋分の日の日にち計算=INT(23.2488 + 0.242194 * (B1-1980))-INT((B1-1980)/ 4) 西暦が分かれば秋分の日は計算出来ます。但し2100年までの計算式だったと思います。 B5秋分の日の曜日番号関数=WEEKDAY(DATE(B1,9,B4)) B7年間祝日関数=IF(B5=4,16,15) 秋分の日の曜日番号が4(水曜日)の場合は15日、それ以外は14日 B8年間日曜日関数=IF(B2=365,IF(B3=1,53,52),IF(OR(B3=1,B3=7),53,52))
お礼
大変わかりやすく教えて下さりありがとうございました。 心から感謝です。
- shintaro-2
- ベストアンサー率36% (2266/6245)
>毎年の1年間の日曜と祝日のみの合計日数を求めたいのですが、そのような事は可能でしょうか? 1年は365日 52週間と1日 元旦が日曜日でなければ、日曜は52日 祝日に関しては、 民の祝日に関する法律 http://law.e-gov.go.jp/htmldata/S23/S23HO178.html で確認してください。 日曜日と重なった場合の振替休日のカウントをどうするかは、momona77 さんが決めること。 たとえばエクセルではweekday関数で曜日がわかりますから、祝日法で定められた日のリストを作成し、それらの日の曜日を確認しすればよいでしょう。 振替休日をカウントしない場合、日曜はweekdayの値が1なのでweekdayが1の祝日の日をカウントして、祝日と日曜の合計から引くという手が考えられます。
お礼
迅速なご回答に心から感謝したします。 ありがとうございました。
お礼
大変わかりやすく教えて下さりありがとうございました。 手順通り進めて、出来ました。 心から感謝です。