[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『平日、祝祭日、土日、土日と重なった場合のカウント』(ひで)
A B C
1 5月1日(水)
2 5月2日(木)
3 5月3日(金) 憲法記念日
4 5月4日(土) 祝日
5 5月5日(日) こどもの日
6 5月6日(月) 振り替え休日
《略》
31 5月31日
32 平日 ***日
33 土日 ***日
34 祝祭日 ***日
35 振り替え***日
36 合計31日
というように32行以降に平日や祝祭日、
土日などの日数をカウントしたいと思っています。
上記のような年で土日と祝祭日が重なっているときには
祝祭日にカウントし、土日からはその日数だけ減らし、
トータルで31日になるような数式を考えています。
なかなかうまくいきませんので、どなたかご教授お願いいたします。
なお、
別シートに
1年間の祝日と祝日名一覧をLISTというセル名で作ってあり、
あるセルに年を入れると、自動的に祝祭日や振り替え休日を書いてくれるようにはなっています。
よろしくお願いいたします。
こんにちは〜♪
A列 日付 B列 曜日 C列 祝祭日名
の場合です。
A B [32] 平日 23 [33] 土日 4 [34] 祭日 3 [35] 振り替え休日 1 [36] 合計 31
のようにして〜。。
B32 =COUNT(A1:A31)-SUM(B33:B35) B33 =SUMPRODUCT((B1:B31={"(土)","(日)"})*1)-SUM(B34:B35) B34 =COUNTIF(C1:C31,"*?*")-B35 B35 =COUNTIF(C1:C31,A35)
で、いかがでしょうか?
。。。。Ms.Rinでした〜♪♪
おや、衝突しちゃいましたがそのまま載せます。 以下衝突前の文章です。
えっと、B列に曜日が表示されていますかね? 1.B列の曜日が表示形式[(AAA)]などで表示されているなら 作業列(D1:D31)を使いますが、D1に =IF(A1="","",IF(C1="振り替え休日",4,IF(C1<>"",3,IF(WEEKDAY(A1,2)>5,2,1)))) として、D31までコピー。 平日(1) 土日(2) 祝祭日(3) 振り替え(4)の番号が表示されますので [A] [B] [C] [D] [32] 1 平日 21 日 [33] 2 土日 6 日 [34] 3 祝祭日 3 日 [35] 4 振り替え 1 日 [36] 合計 31 日 該当番号をA32から入力し、C32に =COUNTIF($D$1:$D$31,A32) として、C35までコピーです。 2.B列の曜日が文字で表示されているなら [A] [B] [C] [32] 平日 21 日 [33] 土日 6 日 [34] 祝祭日 3 日 [35] 振り替え 1 日 [36] 合計 31 日 B32=SUMPRODUCT((A1:A31<>"")*(B1:B31<>"(土)")*(B1:B31<>"(日)")*(C1:C31="")) B33=SUMPRODUCT(((B1:B31="(土)")+(B1:B31="(日)"))*(C1:C31="")) B34=SUMPRODUCT(N(C1:C31<>""))-B35 B35=COUNTIF($C$1:$C$31,"振り替え休日")
なんてのは如何でしょうか?
C列におそらくIF関数が入っていると思われますので、たちまち 2.B34の式を変更しました。 ごめんなさい、後でまじめに訂正します。19:45
(HANA)
一応まじめに確認しましたが、どうやらエラーにはならないようなので これ以上深入りはやめておきます。 (B36は =SUM(B32:B35) で求めて下さい。)
ちなみに、A列もIF関数が使ってあり、該当月以外は 「""」が返されている物としての数式です。
A列の該当月以外が 「条件付き書式を利用して、文字の色を背景色と同じに設定してあるため 入力はあるが見えない状態である」 と言う場合は、作業列を使わずに以下の式でもカウント出来るかもしれません。 (この式は、B列を参照していません。) B32=B36-SUM(B33:B35) B33=SUMPRODUCT((MONTH(A1:A31)=MONTH(A1))*(MOD(A1:A31,7)<2)*(C1:C31="")) B34=SUMPRODUCT(N(C1:C31<>""))-B35 B35=COUNTIF($C$1:$C$31,"振り替え休日") B36=SUMPRODUCT(N(MONTH(A1:A31)=MONTH(A1)))
(HANA)
Rinで〜す。。。♪
すみません。 カン違いしていたみたいです。
>上記のような年で土日と祝祭日が重なっているときには >祝祭日にカウントし、土日からはその日数だけ減らし、
ですね。 土日の計算が違ってました〜。
A B [32] 平日 21 [33] 土日 6 [34] 祭日 3 [35] 振り替え休日 1 [36] 合計 31
の日数になりますね。
土日の日数の式は B33 =SUMPRODUCT((B1:B31={"(土)","(日)"})*(C1:C31=""))
これだけ訂正して下さい。
HANAさんと日数があってますから たぶん大丈夫かな〜。。。
。。。。Ms.Rin〜♪♪
しかしながら,うまくいきませんでした。
何もしなければ上記の設定で完璧でした。
しかし,祝日名のB列に,行事などを記入したところ,カウントがずれてしまいました。
もう一度,ご教授お願いいたします。
私がやりたいことは,1ヶ月の中で
祝日,土日,振替休日を除いた
通常の学校の授業日をカウントしたいのです。
その際,祝日と日曜日が重なると振替休日
があるために1日授業が無くなります。
しかし,祝日と土曜日の時には振替はありません。
そのためにややこしくなってしまっています。
どうかよろしくお願いいたします。
(ひで)
因みに >1年間の祝日と祝日名一覧をLISTというセル名で作ってあり、 >あるセルに年を入れると、自動的に祝祭日や振り替え休日を >書いてくれるようにはなっています。 このLISTのセル番地、内容の並び順と 自動的に祝祭日や振り替え休日を書いてくれるようになっている方法 を教えてもらっても良いですか?
そうそう、曜日列の表示方法もです。
(HANA)
2 4月29日(日) 昭和の日 3 5月3日(木) 憲法記念日 4 5月4日(金) みどりの日 5 5月5日(土) こどもの日 6 7月16日(月) 海の日 7 9月17日(月) 敬老の日 8 9月22日(土) 秋分の日 9 10月8日(月) 体育の日 10 10月28日(日) 群馬県民の日 11 11月3日(土) 文化の日 12 11月23日(金) 勤労感謝の日 13 12月23日(日) 天皇誕生日 14 1月1日(火) 元旦 15 1月14日(月) 成人の日 16 2月11日(月) 建国記念の日 17 3月20日(水) 春分の日 18 − − 19 − − 20 − − 21 − − 22 4月30日(月) 振替休日 23 − − 24 − − 25 - 休日 26 − − 27 − − 28 − − 29 − − 30 12月24日(月) 振替休日
"List"というセル名は上記の範囲で名前が付けられています。 (A1)のみ年号が入っています。 18行目以降は祝日が日曜日と重なった時振り替え休日と表示されるようになっています。 また,例えば元旦などは =DATE(A1,1,1)となっており,カレンダーが入っているシートの 元旦の日付セル(AL9)には =DATE(祝日!A1,1,1) 曜日セル(AM9)はAL9と同じで表示形式を曜日のみにしてあります。 さらに,その隣のセル(AN9)に祝日名が表示されるようになっており =IF(COUNTIF(LIST,AM9),VLOOKUP(AM9,LIST,2,0),"") が入っています。 これでよろしいでしょうか。
>通常の学校の授業日をカウントしたいのです。 と言うことは、B32だけで良いですか? それともやっぱり全部の日数が必要ですか?
あと、作業列を使っても大丈夫ですか? (1/1がAL列 ってことは、使わない方がよさそう?)
(HANA)
ひとまず作りました。 祝日リストもカレンダーも、日付列に文字列を含まないように 変更(条件付き書式で文字色をセル色と等しくする で対応)して下さい。
カレンダーは、A1:A31に日付が在る物としての式です。 別の場所に在る場合は、式を貼り付けた後、シフトさせて下さい。
B32 =B36-SUM(B33:B35)
B33(↓2行一緒にコピーして貼り付けて下さい。) =SUMPRODUCT((MONTH(A1)=MONTH(A1:A31))*(MOD(A1:A31,7)<2))- SUMPRODUCT((MONTH(A1)=MONTH(祝日!$B$2:$B$30))*(MOD(祝日!$B$2:$B$30,7)<2))
B34 =SUMPRODUCT((MONTH(A1)=MONTH(祝日!$B$2:$B$17))*1)
B35 =SUMPRODUCT((MONTH(A1)=MONTH(祝日!$B$18:$B$30))*1)
B36 =SUMPRODUCT((MONTH(A1:A31)=MONTH(A1))*1)
上手く行くと良いのですが。
(HANA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.