
祝日と土曜、日曜の合計をカウントしたいです。
Excelで祝日シートを作成しております。
別シートのad5セルにはリストで年が選択できるようになっています。
ad6には同様に月がリストで選択可能です。
例えばad5セルで2024、ad6セルで7を選択した場合、2024年7月の土曜、日曜、祝日の合計がでるようにしたく、以下の計算式を入れました。
=SUMPRODUCT(--(WEEKDAY(DATE(AD5, AD6, ROW(INDIRECT("1:" & DAY(EOMONTH(DATE(AD5, AD6, 1), 0))))))=7)) + SUMPRODUCT(--(WEEKDAY(DATE(AD5, AD6, ROW(INDIRECT("1:" & DAY(EOMONTH(DATE(AD5, AD6, 1), 0))))))=1)) + COUNTIFS(祝日リスト!$A$2:$A$536, ">=" & DATE(AD5, AD6, 1), 祝日リスト!$A$2:$A$536, "<=" & EOMONTH(DATE(AD5, AD6, 1), 0), 祝日リスト!$A$2:$A$536, "<>" & TEXT(WEEKDAY(DATE(AD5, AD6, ROW(INDIRECT("1:" & DAY(EOMONTH(DATE(AD5, AD6, 1), 0)))))), "ddd"))
結果としては、2024年7月は土曜、日曜に祝日がないため9となります。
しかし、土曜、日曜に祝日の場合、土曜、日曜の個数と祝日を2日分としてしまいます。
土曜、日曜に祝日の場合は1日としてカウントするには、上記の式をどのように修正するのが良いでしょうか。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんにちは
どういう計算方法を取っているのかについて何ら説明がありませんが、とても解読する気にはならない式なので、文章にある事象だけからですが・・
>しかし、土曜、日曜に祝日の場合、土曜、日曜の個数と祝日を
>2日分としてしまいます。
単純に、土日の数と祝日の数を加算して計算していませんか?
ご質問のケースなら、
『ある日が土日または祝日ならカウント、それ以外ならカウントしない』
というロジックで計算すれば良いのではないでしょうか?
多分、AND と OR のロジックを整理できていないのではないかと推測します。
>土曜、日曜に祝日の場合は1日としてカウントするには、
>上記の式をどのように修正するのが良いでしょうか。
残念ながら、上記の理由で、とても修正する気にはなりません。
SUMPRODUCT関数を利用して計算したいのなら・・
「祝日リスト」がどのような形式になっているのかも不明ですが、仮に「振替休日」がリストに含まれているとしてよいのなら、以下で算出可能と思います。
(考え方は、前述の通りです)
=SUMPRODUCT((((WEEKDAY(ROW(OFFSET($A$1,DATE(AD5,AD6,0),,DAY(DATE(AD5,AD6+1,0)))),11)>5)+COUNTIF(祝日リスト,ROW(OFFSET($A$1,DATE(AD5,AD6,0),,DAY(DATE(AD5,AD6+1,0))))))>0)*1)
ちなみに、No1様も回答なさっている NETWORKDAYS関数を利用すれば、同じ結果をもっと簡単に求められますし、式の視認性も良くなると思います。
=DAY(DATE(AD5,AD6+1,0))-NETWORKDAYS(DATE(AD5,AD6,1),DATE(AD5,AD6+1,0),祝日リスト)
※「振替休日」がリストに含まれていない場合は、「振替休日」の分(=祝日が日曜日のケース)を加算する必要があります。
No.2
- 回答日時:
「途中経過時の見え方に違和感」が、何に対してなのかが定かで
ないので、別方法に抵抗があるのでしょうか?
別方法なら、振替休日などの祝日データが正しければ、問題なく
取得できるかと思います。
添付画像だと3行目だけ非表示にしていますが、問題なく日数を
出しています。
=DAY(EOMONTH(B$3,0))-NETWORKDAYS(B$3,EOMONTH(B$3,0),Sheet2!$A$2:$A$41)
(年の部分は、来年分は修正してあります)
2025年2月の場合なら、振替休日と28日の月末を考慮しても、
10日が取得できているので、問題なく動作しているかと。

返信遅くなりました。
代替案までご提示して下さりありがとうございます。
フォーマットの作りから見直して想定した通りのものになりました。
No.1
- 回答日時:
面倒な方法で計算されていますね。
修正するより別方法を検討しては。
土日祝日を数えのではなく、期間内の日数を求めてから、期間内の
営業日(稼働日)を数えて引いたらどうですか。
指定月の日数:EOMONTH関数とDAY関数
https://h1r0-style.net/excelvba/get-days-of-month/
稼働日数:NETWORKDAYS関数
https://tokusengai.com/_ct/17550247
ちなみに、以前の質問は解決されたのですか?
https://oshiete.goo.ne.jp/qa/13849637.html
早速のご回答ありがとうございます。
仰るとおり当初は営業数でけんとうしていたのですが、途中経過時の見え方に違和感があり、今回の方法を考えてました。
別質問の方について回答できておらず、失礼いたしました。
Windows10でもストアなどからペイントのバージョンアップが可能という記事をみたので、後ほど試そうと考えており後回しにしておりました。
結論としては、貴方にご回答いただいた案が元々想定していた答えだった為、このあとクローズします!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VLOOKUP FALSEのこと
-
if関数の複数条件について
-
【マクロ】実行時エラー '424':...
-
同じ名前(重複)かつ 日本 ア...
-
excel
-
【マクロ】数式を入力したい。...
-
Office2021のエクセルで米国株...
-
【画像あり】オートフィルター...
-
エクセルシートの見出しの文字...
-
エクセルの複雑なシフト表から...
-
エクセルのVBAで集計をしたい
-
エクセルでフィルターした値を...
-
【関数】=EXACT(a1,b1) a1とb1...
-
【画像あり】【関数】指定した...
-
勤怠表について ABS、TEXT関数...
-
エクセルの文字数列関数と競馬...
-
表計算ソフトでの様式の呼称
-
【マクロ】【画像あり】4つの...
-
Excelで4択問題を作成したい
-
空白のはずがSUBTOTAL関数でカ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでフィルターした値を...
-
if関数の複数条件について
-
エクセルシートの見出しの文字...
-
excel
-
エクセルの文字数列関数と競馬...
-
VLOOKUP FALSEのこと
-
同じ名前(重複)かつ 日本 ア...
-
表計算ソフトでの様式の呼称
-
エクセルに写真が貼れない(フ...
-
【マクロ】数式を入力したい。...
-
【マクロ】実行時エラー '424':...
-
【画像あり】オートフィルター...
-
Office2021のエクセルで米国株...
-
【画像あり】【関数】指定した...
-
エクセルのVBAで集計をしたい
-
【マクロ】【画像あり】4つの...
-
【関数】3つのセルの中で最新...
-
【マクロ】excelファイルを開く...
-
LibreOffice Clalc(またはエク...
-
エクセルのライセンスが分かり...
おすすめ情報