• ベストアンサー

EXCEL2003で日付計算(難易度高)

EXCEL2003で日付計算を行っているのですが、 指定した日(開始日)から日曜日と祝日を除いた7日後(Aとします)を表示させ、 その日から指定した日(終了日)までの日数を求めたいのですが 何かよい式はないでしょうか? ちなみにAから終了日までは日曜日も祝日も含みます。 開始日 7/10 7日後 7/17 終了日 7/22 7/17~7/22日数は7/17を含めるため7です。 通常の引き算だとA(7/17)を含まず6と表示されてしまいます。

みんなが選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (7972/17042)
回答No.2

開始日が7/10のときに、日曜日と祝日を除いた7日後は7/18になると思うのだが、どうして7/17なんだろう?もしかすると単純に7日後を求めてその日が日曜日か祝日になるときは次の日にするってこと? 7/17から終了日 7/22 までの日数は6だと思うんだけど、どうして7なのか?

Not_Pro
質問者

補足

7/17から22までは6でした。私の勘違いでした。すみません 7/10から7日後は日と祝を除いて 10・11・13・14・15・16・17 で7日後は17日としていましたが、18日でした。 これも私の勘違いでした。 なので18日から22日までの日数を求めたいです。 18・19・20・21・22なので答えは5です。

その他の回答 (7)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.8

こんにちは。 >日曜日の12日を省いて7日間数えます。 >そして出た日付以降の日~終了日まで求めます。 >例だと18日~31日まで やっと分かりました。(^^;それは、前回のご質問の内容で、レスが付かないので、質問しなおしたわけですね。 A1:起算日 B2:祭日を抜く7日 A3:締日 ------------------------------------------- A2: =SMALL(IF((WEEKDAY(A1+ROW($A$1:$A$20)-1,2)<7)*ISERROR(MATCH($A$1+ROW($A$1:$A$20)-1,holiday,0)),$A$1+ROW($A$1:$A$20)-1,""),B2) B3; =A3-A2+1 これで、良いと思います。

Not_Pro
質問者

お礼

回答ありがとうございます。 さっそく試してみたいと思います。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

こんにちは。 私は、読み間違えたかもしれません。 >日曜日と祝日を除いた7日後(Aとします)を表示させ、 ご質問からは、その意図を理解できませんでしたから、他の方の回答の反応を参考にしました。日数を出すのですか? #4 の図を元にして、 =SUMPRODUCT((WEEKDAY($A$1+ROW(OFFSET($A$1,0,0,$A$2-$A$1+1))-1,2)<7)*ISERROR(MATCH(A1+ROW(OFFSET($A$1,0,0,$A$2-$A$1+1))-1,holiday,0))) A1;起算日 A2;終了日 Holidayは、休日/祭日リスト 数式中の [<7 ]は、土曜日は含み、日曜日は除くという計算です。 土曜日も数えないなら、Workday 関数というものがあります。

Not_Pro
質問者

お礼

回答ありがとうございます。 日曜日と祝日を除いた7日後というのは たとえば 開始日7/10 終了日7/31 だとすると 7/10・11・13・14・15・16・17 という風に日曜日の12日を省いて7日間数えます。 そして出た日付以降の日~終了日まで求めます。 例だと18日~31日まで =SUMPRODUCT()の式はこれから試させていただきます。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

ご質問で開始日が7/10で7日後が7/17というのはおかしいのではないでしょうか?必ず間に日曜日が入りますので通常では7/18になりますね。また、7日後が7/17として、終了日の7/22までは7ではなくて6ではないでしょうか? 7日後が7/18で7/22までですから正解は5ではないでしょうか? ところで求めるための式ですがA1セルに開始日がB1セルに終了日があるとしたら終了日までの日数は次の式で良いでしょう。 なお、祝日についてはE1セルから下方に日付順に並んで下方に入力されているものとします。 =B1+1-(A1+8+(MATCH(VLOOKUP(A1+8,E:E,TRUE),E:E,0)-MATCH(VLOOKUP(A1,E:E,TRUE),E:E,0)))

Not_Pro
質問者

お礼

回答ありがとうございます。 7/10から7日後ですが、説明が足りず申し訳ありません。 7/10・11・13・14・15・16・17  開始日を含めるので17が7日後とします。 7/17~22までは確かに6ですね.....勘違いしてました。 式はこれから試してみようと思います。

Not_Pro
質問者

補足

またまたすみません。 7日後は18日でした。勘違いしてました.....

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

#4 の回答ですが、修正します。 数式が間違っていました。 片入れでは、計算がヘンです。検算してみると、当日が、休みの日の場合と、その前の日で同じになるというのは、ありえないからです。だから、当日をチェックしないと合いませんでした。 =SMALL(IF((WEEKDAY(A1+ROW(A1:A200)-1,2)<7)*ISERROR(MATCH(A1+ROW(A1:A200)-1,holiday,0)),A1+ROW(A1:A200)-1,""),B2) 要配列確定

Not_Pro
質問者

お礼

回答ありがとうございます。さっそく試してみたいと思います。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 ある程度、掲示板では知られた質問のひとつだと思います。 以下は、私が、昔、別の掲示板に参加した頃に作ったものです。たぶん、もう新しい数式を思いついている人もいるとは思います。私は、関数は、もう遠ざかって得意ではありません。 あまり、長い期間ですと、数式で配列数式ですので負担が大きすぎますが、1ヶ月~1年ぐらいなら、祭日を登録すれば関数で可能です。VBAでは、祭日計算から始まりますから、かなり大掛かりなVBAにはなってしまいますが、かなり先まで、計算可能だと思います。 祭日をリストに入れている限りの範囲程度の範囲でしたら、可能です。また、私が、名前「holiday」で使っている下記の日付は、計算で出しているものです。ただし、国の取り決めで、春分の日、秋分の日はずれることがあるそうです。 図を参考にしていれてみてください。 注:以下は、A200 となっていますから、200日先まで計算が可能だということです。ROWの引数は、仮の数ですから、数式がどこにあっても、必ず、A1を先頭にしなくてはなりません。 なお、日付の計算は、一般的な片入れになっていますから、その日は加えません。 '------------------------------------------- A1: 2009/7/10 A2: =SMALL(IF((WEEKDAY(A1+ROW(A1:A200),2)<7)*ISERROR(MATCH(A1+ROW(A1:A200),holiday,0)),A1+ROW(A1:A200),""),B2) 配列の確定をして(一旦式を入力したら、F2を押して、『ShiftとCtrlを押しながらEnterキー』を押す)、再確定してください。 B2:10 C2:=A2-A1 「holiday」として、名前の定義で登録します。 '------------------------------------------- 2009/1/1 2009/1/12 2009/2/11 2009/3/20 2009/4/29 2009/5/3 2009/5/4 2009/5/5 2009/5/6 2009/7/20 2009/9/21 2009/9/22 2009/9/23 2009/10/12 2009/11/3 2009/11/23

回答No.3

祝日を除いて日数をカウントする関数、あるいは祝日を考慮して何日後の日付を導く関数は有りません。何故なら法律が変われば将来の祝日は変わります。また過去年の祝日は分かってはいますが計算では出ません。将来年は現在の法律での祝日とするとしても2年後については自動判定不可能です。何故なら春分の日と秋分の日は来年までしか決まっていないからです。(国立天文台が2月の官報で来年分を発表する) 日数の計算はDATEIF関数を使うより引き算で良いでしょう。上の例で6が表示されると解っているんですから計算式で+1するだけです。

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

DATEDIF関数 これで解決しますよ ただし、これは関数ウィザードでは表示されない関数です この関数は  =DATEDIF(開始日,終了日,"単位") と指定して使います 単位には、 "年"、"月"、"日"、を指定する、"Y"、"M"、"D"、 を指定します 質問の場合は"日"を指定すればよいので  =DATEDIF("2009/7/10","2009/7/22,"D") とすればOK ヘルプもありませんから、解説しているサイトを探してみてください 詳しい情報を入手できますよ

Not_Pro
質問者

補足

開始日から日祝を除いた7日後から終了日までを求めたいので、この式ではできないみたいです。

関連するQ&A

  • excel2003 最初の7日間だけ日曜と祝日を除いた日付計算

    excel2003で日付計算をしているのですが、最初の7日間(一週間)のみ 日曜と祝日を除きます。8日目以降は日曜日も祝日も含めて日付を算出します。 この方法をどなたか分かる方がいたらご教授お願いします。

  • EXCELで日付計算

    EXCEL2003である期間からある期間までの間の日数を表示させ、さらにその結果から日曜日だけを除いた結果と日曜日と祝日だけを除いた結果の2通りの答えを表示させたいのですがどうすればよいでしょうか? 土日を除く場合はWORKDAYS関数を使用していたのですが...... どなたかわかればご教授お願いします。

  • 【Excel97】経過日数の計算で、土日・祝日を抜かして計算したい

    表記のとおりです。 「○○月○○日~○○月○○日」という日数計算を出してくて、今はただ引き算で経過日数を出してるだけなんです。そうすると必要のない土日や祝日も入ってしまうので、それを除いた経過日数を出す関数はどのようにすればいいのでしょうか。 私は関数にはうとくて、「こういう数式にすれば」また「こういう表示形式にすれば」と具体的に教えていただけれると嬉しいです。

  • エクセルで作業期間の日数を計算したい

    エクセルについて質問です。 セルA1に開始日(例:2012/2/20) セルC1に終了日(例:2012/5/12)を入力し、この期間の日数(○○日間)を 計算する方法を教えて下さい。 更にこの期間で、「土日祝日を除いた日数(平日のみの日数)」と 「日曜祝日を除いた日数(平日+祝日でない土曜日の日数)」を算出する方法も教えて下さい。 ちなみに作業日数を計算するのに、DAYS360関数を使ってみましたが、 1年を360日として計算するので、正確な日数になりません。 また、曜日や休日が絡むとどんな関数を使えば良いのか全くわかりません。 よろしくお願いいたします。

  • エクセル 関数で土日祝休日を除く日数を計算する

    下記のようなエクセルシートにおいて 土曜、日曜、祝休日を除く日数を 関数で計算することはできせんでしょうか。 開始日・・セルA1 終了日・・セルA2 (セルの書式はいずれも"日付") 式を書くセル・・A4 --------------------------- A 1 2004/6/25 2 2004/7/31 3 4 25 --------------------------- *この場合求めたい値は "25"です。 ・土日、海の日が除かれている ・開始日も 1 カウントする。  (あとで 1 加えるのでもよいです) よろしくお願いします。

  • Excelでの日付の計算

    あるセルに例えば「2002/7/4」という日付が入っていて、この日から今日までの日数を計算する式を教えてください。その際にその計算式を入れたセルの書式の表示形式は何を設定すればいいのでしょうか?よろしくお願いします。

  • エクセルでの日付の計算方法

    A列、B列に以下のデータが入っています。 契約日■■■申込日■ 20020402■20020207 20020403■20020207 20020404■20020207 20020405■20020207 20020412■20020207 20020421■20001202 20020419■20020106 20020511■19990315 20020423■20020411 このデータ、実は日付なのですが、申込日から契約日までの日数を 計算したいのです。(A2-B2の計算を日付でしたいという意味です) ちなみにセルの書式設定で日付を指定すると、################と 表示されてしまいます。 どなたか方法をご教授ください。

  • EXCEL:WORKDAY関数の使い方

    EXCELで祝日リストを用意し、WORKDAY関数で開始日から何日後の日付をを表示したいと考えています。 しかし、この関数では土日を休日としているため、年に数回のみの土曜営業日(もしくは日曜営業日)をまたぐ日付表示はうまくいきません。 祝日リスト(休業日)とは反対の意味になりますが、別シートに土曜営業日リストを用意してその日を営業日として計算に含む方法はありませんでしょうか? 関数では不可能でVBAで可能であれば、VBAでも構いませんのでどうかEXCELの知識のある方よろしくお願いします。

  • Accessのテーブルに稼働日フィールドを追加したい

    ACCESSのAテーブルの[開始日]フィールドと[終了日]フィールドにそれぞれ日付が入っています。 Bテーブルの[祝日]フィールドに年度内の祝日データが入っています。 Aテーブルに新しく[開始日]から[終了日]までの期間で土日と祝日を除いた日付(要は稼働日)の日数を表示させるフィールドを作成したいのです。 DATEDIFFで期間内の日数、期間内の土日の日数を計算することはできたのですが、Bテーブルのデータ内で期間内のデータの数を数えて引くということができません。 そもそもこのやり方でよいのかも、疑問なのですが、よい方法を教えていただけませんでしょうか? どうぞ、よろしくお願いいたします。

  • Excel:一日当たりの回数計算

    Excelで一日当たりの回数計算をしたいのですが・・・。 開始日は、A3(年)、B3(月)、C3(日)です。 行の1~2行は項目の名前(タイトル)です。 終了日は、表示されている最終行です。 開始日より1行分で1カウント(1回)です。同日に複数回ある場合もあります。 ただし、1月1日と土日のみ日数には含みません。 計算式としては、 行数(A3から)÷開始日から終了日までの日数(1月1日と土日のみ除く) となります。 回答よろしくお願いします。

専門家に質問してみよう