プロが教える店舗&オフィスのセキュリティ対策術

エクセルで翌営業日の日付を自動算出したいと考えています。
営業日は日曜日と祝日以外すべてです。

B1に本日の日付があり、
D1に翌営業日の日付を自動算出したいです。

祝日は別シートで祝日マスタを持っています。
困っているので、詳しい方教えてください。

宜しくお願いします。

「日曜日を除く翌営業日の日付算出」の質問画像

A 回答 (7件)

回答No.6に勘違いがありましたので訂正します。


土曜日が営業のときWORKDAY関数をそのまま使えませんので下記のように訂正します。

D1=IF(WEEKDAY(B1+1,2)=6,IF(COUNTIF(Sheet2!A2:A18,B1+1)=1,WORKDAY(B1,1,Sheet2!A2:A18),B1+1),WORKDAY(B1,1,Sheet2!A2:A18))
    • good
    • 2
この回答へのお礼

できました!!!
どうもありがとうございました!!!

お礼日時:2013/12/06 12:27

>B1に本日の日付があり、


>D1に翌営業日の日付を自動算出したいです。
>祝日は別シートで祝日マスタを持っています。
最適な組込み関数は =WORKDAY(開始日,日数,祭日一覧) になります。

D1=WORKDAY(B1,1,{祝日マスタの全セル})

日数は翌日ですから 1 で良いことになります。
添付画像はSheet2のA2~A18に2013/12/23~2014/11/23の祝日を定義しています。
「日曜日を除く翌営業日の日付算出」の回答画像6
    • good
    • 0

No.3です!


たびたびごめんなさい。

投稿後一応確認してみました。
前回の数式ではB1セルの1日後が「金曜日」で「祝日一覧」にある場合、次の月曜日になってしまいますので、
少し長くなりますが、↓の数式に変更してください。

=IF(AND(WEEKDAY(Sheet2!B1)=5,COUNTIF(祝日一覧,B1+1)),IF(COUNTIF(祝日一覧,B1+2)=0,B1+2,WORKDAY(B1,1,祝日一覧)),IF(WEEKDAY(B1)=6,IF(COUNTIF(祝日一覧,B1+1),WORKDAY(B1,1),B1+1),WORKDAY(B1,1,祝日一覧)))

2016年までの祝日を調べてみると、金曜日が祝日なのは
2013/5/3・2014/3/21・2016/1/1・2016/4/29・2016/12/23
の5日だけのようです。
その前日が「祝日」(木・金と連日祝日)という日はないようですので、
とりあえず2016年までは対応できるのではないでしょうか?

※ あくまで一般的な暦上の祝日で、独自に平日を「祝日一覧」に入れている場合は
この限りではありません。m(_ _)m
    • good
    • 0

>#NAME?でエラーになってしまいうまくいきません。



ご相談で
>祝日は別シートで祝日マスタを持っています。

というお話でしたので,「祝日一覧を記載したセル範囲に 祝日一覧 と名前を定義してある」前提で回答しています。

そういう事は何もしていないなら,素直に
=MIN(IF((WEEKDAY(B1+ROW($B$1:$B$9))>1)*(COUNTIF(祝日を記載したシート!祝日を記入してあるセル範囲,B1+ROW($B$1:$B$9))=0),B1+ROW($B$1:$B$9)))
といった数式に修正し,必ず忘れずにコントロールキーとシフトキーを押しながらEnterで入力して下さい。
言わずもがなですが「祝日を記載したシート」だの「祝日を記入してあるセル範囲」だのは,上述の式を何も考えずコピー貼り付けてもダメですから,あなたの実際のエクセルの姿に応じて正しく修正して下さいネ。




>B2~B9は本日の日付に1日ずつ日付を足したらいいですか

B2からB9には「何もする必要はありません」。B1に今日の日付を記入したら,回答した数式を「余計な細工は何もしないで」使用して下さい。
今日の日付を記入するセルが実際にはB1じゃない場合でも,「$B$1:$B$9」の部分は「絶対に触らずこのまま」にしておいて下さい。
    • good
    • 0

こんばんは!


すでに回答は出ていますが・・・

別Sheetの祝日データを「祝日一覧」と名前定義しているとします。

D1セルに
=IF(WEEKDAY(B1)=6,IF(COUNTIF(祝日一覧,B1+1),WORKDAY(B1,1,祝日一覧),B1+1),WORKDAY(B1,1,祝日一覧))

としてみてはどうでしょうか?

※ 細かい検証をしていませんので、
B1セルの前後が祝日の場合はどうなるか試してみてください。m(_ _)m
    • good
    • 0

やり方は幾つかありますが,



年末年始とかGWとかで最大8連休まで:
=MIN(IF((WEEKDAY(B1+ROW($B$1:$B$9))>1)*(COUNTIF(祝日一覧,B1+ROW($B$1:$B$9))=0),B1+ROW($B$1:$B$9)))
と記入,必ずコントロールキーとシフトキーを押しながらEnterで入力。


#「祝日一覧」の中に日曜日も組み込んで「休業日一覧」にしてしまった方が,数式は簡単になります。

この回答への補足

#NAME?でエラーになってしまいうまくいきません。
B1は本日の日付
B2~B9は本日の日付に1日ずつ日付を足したらいいですか。

<#「祝日一覧」の中に日曜日も組み込んで「休業日一覧」にしてしまった方が,数式は簡単になります。

⇒このやり方でもOKです。

再度教えてください。
宜しくお願いします。

補足日時:2013/12/05 19:20
    • good
    • 0

WORKDAY関数を使えばいいですが、別セルに祝日の一覧を作成する必要があります。



使い方は下記を参照
http://kokodane.com/kan28.htm
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!