質問: 度々お世話になっております。 現在、Excelで会社の出勤日数と月の合計勤務時間を計算する表を作成しております。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/0f3c63a1bcc2ef1b0b7d468b29128b86.png) 今は、DAY関数とEOMONTH関数を使い日数を取得できています。 やりたいことは 1. B4セルはプルダウンから年を選択。(2018~2022) 2. 週5勤務者と週4勤務者がいるため。B5セルでフルタイムか毎週の休みの曜日を選択(月曜~金曜) 3. D5~D16セルに対象年月の土日祝日を除いた勤務日数を表示。(週5勤務者の場合) 4. D5~D16セルに対象年月の土日祝日毎週休みの日を除いた勤務日数を表示。(週4勤務者の場合) 5. E5~E16セルにD5~D16の勤務日数×8hの時間を算出。 祝日はSheet2に2018年から2022年までの祝日を表にして入れています。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/5f5f97a13bb5a585620a26913eb6138f.png) ※有給休暇や半休などは考慮しません。土日祝祭日+週4日勤務者の毎週の固定休みの曜日だけを考慮します。 以上のことを行いたいと考えています。 1.,2.に関してはできているのですが、選択された年の値を呼ぶことが出来ません。 日数の計算はDAY関数とEOMONTH関数を用いて2017年の月の日数を表示はできるのですが、ここから土日祝日を引くという作業のやり方で詰まっています。 *以下追記* 週4及びフルタイムの時の日数をセルに出力しました。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/02adee35b03f162352b37ea9305f1b46.png) 最終的に時間(E列)に算出するためには 1.年選択から年を選択。 2.勤務形態から曜日を選択 3.上記のイメージの表に行き、月曜休みであれば月曜日の列のセルの日数を計算して時間を算出する。 E列の時間の算出の式はどのようにしたらよいのでしょうか? 休みの曜日によってとってくる値が異なりますので、VBAでIF文を回すのでしょうか? よろしくお願いいたします。 よろしくお願いいたします。
回答: まず、集計をする場合は見た目より、 集計しやすいデータの形にするのが鉄則です。 そして、提示の表を見るに、 「月」「日数」が2つに分かれているので、 1つにまとめる方が良いかと。 (通常、データは行方向へ追加するので、C列を「月」、D列を「日数」等にするのが適当でしょう) で、本題ですが、最終目標は「勤務時間の集計」ですよね? 月の日数 ― 土日祝の日数 x 8h(?) だけでいいのですか? 会社の創立記念日、有給、病欠、災害等による休暇、は考慮不要ですか? 半日単位、時間単位の考慮は不要ですか? 目的によって設計が大きく変わりますので、 細かい条件の提示があれば、皆さんが答えやすくなります。 ※正直、プログラムは不要です。 関数と日付の一覧等で完成できるでしょう。