- ベストアンサー
エクセル 年月日が分かれてセルに入力されている日数の算出方法について
ある期間の日数を数式で算出したいのですが、 年月日が、 A列1行目:2008、B列1行目:12、C列1行目:25、 D列1行目:2008、E列1行目:12、F列1行目:31、 のように、それぞれ分かれたセルに入力されており、 例えば、この間の日数をG列1行目に"6"といった具合に算出したいのですが、数式でうまく算出する方法が思い付きません。 (※ちなみに日付の入力方法は変更ができません。) どなたかもし良い方法をご存知でしたら、教えていただけないでしょうか? よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
別の質問での私の回答に合わせて表を作り変えたら 支障が出た、ということですね。 申し訳ないです。 >ちなみに、ここから土日祝日を除き、臨時出勤日など特別な日があった場合は、その日数を加算したいのですが、そういった事もできますでしょうか? 一つの方法ですが、別シートにカレンダーを作ります。 (シート名を「カレンダー」とします) A列が日付、B列が曜日、C列が祝日、D列が臨時出勤日とします。 A2に「2008/12/1」(何日でもいいですがとりあえず)と入力します。 これをオートフィルで下方向に日付を入力していきます。 B2には「=WEEKDAY(A2,3)」と入力します。 これをA列に日付が入っている全ての行にコピーします。 これでB列は月曜:0、火曜:1、…土曜:5、日曜:6となったはずです。 C列は、A列の日付が祝日の場合のみ、「1」を入力します。 D列は、A列の日付が臨時出勤日の場合のみ。「1」を入力します。 日数の計算式は、ちょっと長いですが =SUMPRODUCT((カレンダー!$A$2:$A$32>=DATE(A1,B1,C1))*(カレンダー!$A$2:$A$32<=DATE(D1,E1,F1))*(カレンダー!$B$2:$B$32<=4)*(カレンダー!$C$2:$C32<>1))+SUMPRODUCT((カレンダー!$A$2:$A$32>=DATE(A1,B1,C1))*(カレンダー!$A$2:$A$32<=DATE(D1,E1,F1))*(カレンダー!$D$2:$D32=1)) A1、B1、C1を年、月、日(開始日)とし D1、E1、F1を年、月、日(終了日)とし 「開始日以降、終了日以前、曜日が月~金、祝日でない」日数と 「開始日以降、終了日以前、臨時出勤日である」日数を足す、という式です。 ※式中の「32」は、カレンダーの行数です。適宜変えて下さい。
その他の回答 (3)
[回答番号:No.2この回答への補足]に対するコメント、 「ここから土日祝日を除き」たければ =NETWORKDAYS()関数を使えばOKです。なお、別途祝日表が必要です。 祝日が出勤日の場合は該当日を祝日表に入れなければ済むことですが、土曜あるいは日曜が出勤日の場合の対処法をアイニク知らないので、残念ながら私はおチカラになれません。
お礼
ご回答いただき、誠にありがとうございました。
別解 =(D1&"/"&E1&"/"&F1)-(A1&"/"&B1&"/"&C1)
補足
ご回答いただきありがとうございます。こちらの方法でも算出できました。 ちなみに、ここから土日祝日を除き、臨時出勤日など特別な日があった場合は、その日数を加算したいのですが、そういった事もできますでしょうか? 質問ばかりで大変申し訳ありません。ご存知でしたら、お知恵を貸していただけると有り難いです。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
こんな感じ? =DATE(D1,E1,F1)-DATE(A1,B1,C1) とか =DATEDIF(DATE(A1,B1,C1),DATE(D1,E1,F1),"d")
お礼
ご回答いただきありがとうございます。このやり方で算出できました。 ちなみに、ここから土日祝日を除き、臨時出勤日など特別な日があった場合は、その日数を加算したいのですが、そういった事もできますでしょうか? 質問ばかりで大変申し訳ありません。ご存知でしたら、お知恵を貸していただけると有り難いです。
補足
いえいえ、こちらこそ何度もお手間を取らせてしまい、大変申し訳ありません。何度もご丁寧にご回答いただき、誠にありがとうございました。無事解決することができました。本当に助かりました。