• 締切済み

エクセルで営業日後の日数計算をしたい

こんにちは、教えてください エクセルで営業日数の計算て可能でしょうか? たとえば土日祝日を除いた、14営業日後の日付を求めたり、逆に●月●日は何営業日後であるというようなものです できるかどうかわかりませんが、方法があれば教えてください

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#1の方の(土日を含め)休日を表に持つやり方が良いのではと思いました。 それで下記をやって見ました。 2004年9月であれば どこかの列のセルに 2004/9/4 2004/9/5 2004/9/11 2004/9/12 2004/9/18 2004/9/19 2004/9/20 2004/9/23 2004/9/25 2004/9/26 を1日づつ入れる。 ユーザー関数を Function nis(a, b, c) n = 0 For i = a To b For Each cl In c '休日に該当するか If i = cl Then GoTo p01 Next n = n + 1 p01: Next i nis = n End Function で定義する。 土日をプログラムで判定すれば、休日表は小さくなります(略)。 日数を出したいセルに 例としてスタート日A1に2004/8/30 A2にエンドの日2004/9/24 休日をいれた範囲をD1:D10とすると 両端いれで関数式=nis(A1,B1,D1:D10)といれる。 答え18になります。 片端いれの場合は For i = a+1 To b か For i = a To b-1 と修正すれば良いです。 日数後は Function nisg(a, b, c) n = 0 For i = a To a + 10000 For Each cl In c If i = cl Then GoTo p01 Next n = n + 1 p01: If n = b Then nisg = i Exit Function End If Next i End Function で =nisg(A1,C5,D1:D10)のようにいれC5に日数があるときの 例です。

  • telescope
  • ベストアンサー率54% (1069/1958)
回答No.2

WORKDAY関数とNETWORKDAYS関数を使います。 WORKDAY(開始日, 日数, 祭日) 開始日から起算して、指定された稼動日数だけ前または後の日付に対応する値を返します。稼動日とは、土曜、日曜、および指定された祭日を除く日のことです。 NETWORKDAYS(開始日, 終了日, 祭日) 開始日から終了日までの期間に含まれる稼動日の日数を返します。稼動日とは、土曜、日曜、および指定された祭日を除く日のことです。 本日(9月18日)から14営業日後の日付を求めたいなら、 たとえばH1:H12に祝日の表を作っておいて、 1/1 1/12  ・  ・ 9/20 9/23  ・  ・ 12/23 =WORKDAY(9/10,14,H1:H12) A1セルに日付、B1セルに日数が入っているなら =WORKDAY(A1,B1,H1:H12) のようにセル指定も出来ます。 本日(9月18日)から9月30日までの営業日数を求めたいなら、 NETWORKDAYS(9/10,9/30, H1:H12) または、セル指定で NETWORKDAYS(A1,B1, H1:H12)

  • HAL007
  • ベストアンサー率29% (1751/5869)
回答No.1

ハッピーマンデー法が出来てから祝日の判定が難しくなりました。 また、業界や会社によって固有の休業日あったりして複雑かつ 計算が正しいかを確かめるのに労力を費やします。 そこで、営業日のカレンダーを作りVLOOKUP関数で計算する方法が良いと考えました。 具体的には、 A列:営業日のカレンダー B列:1から始る連番 C列:曜日表示(応答日計算及びカレンダーの入力チェック)    C列はC2に「=A2」と入力してセルの表示書式-ユーザー定義で    aaaとすると月火の表示にaaaaとすると月曜の表示になります。    後は下にコピーするだけです。 計算はE2に14営業日を計算する元の日付を入力します。 F2には =VLOOKUP(VLOOKUP(E2,$A$1:$B$247,2,FALSE)+14,$B$1:$D$2472,2,FALSE) これで14日後が表示されます。 ※$A$1:$B$247や$B$1:$C$247は私がサンプルで作成した  カレンダーは今年の場合246日ありました。 次に日数計算ですが、 計算したい日を E4に入力します。F5は営業日にしか使わないなら =TODAY()でもいいのですが、休みや任意の日とする場合は日付を入力 する方法が良いです。 計算結果はG4に次の計算式を入れます。 =VLOOKUP(E4,$A$1:$B$247,2,FALSE)-VLOOKUP(F4,$A$1:$B$247,2,FALSE) セル関数を使えばもっとシンプルな計算式になるとは思いますが こちらの方が分り易いと考えました。 また、質問では数日の間を計算する様に思えたので1年のカレンダーと しましたが、これを使う最大値に1年程度を加えたカレンダーを 作れば応用が利くと思います。また、臨時休業が発生した場合でも カレンダーを修正するだけで済みメンテナンスに優れています。

関連するQ&A

専門家に質問してみよう