• 締切済み

エクセルで日付から特定曜日を除いた数(稼働日数等)

B列3行目以降    C列  日付        日付間隔 H23年6月21日(火)   - H23年6月22日(水)    1  ・・・B4-B3   H23年8月2日(火)    41 ・・・B5-B4            H23年8月31日(水)    29 ・・・B6-B5        ・           ・       ・・・・今は単純に日付の間隔    ・           ・    ・           ・ 日付入力は2011/6/21 B列表示形式はge"年"m"月"d"日"(aaa) 日付間隔は=IF(OR(ISBLANK(B3),ISBLANK(B4)),"",DATEDIF(B3,B4,"d")) の式をネットで調べて いれています。 行いたいのは、B5---B4(8月2日から6月22日)間などの各上下間の日曜日などの特定曜日を除いた 数値(ここでは実稼働日数)を出したいです。 特定曜日が日曜日以外に土曜日と日曜日とか祝日とかもありますが、 ・・・・かなり複雑かなと思います(別シートにカレンダー表などが必要かと)。 とりあえずは毎週の日曜日です。 日付の入力日は不特定日です。行間に空白はありません。 エクセル素人につき<WEEKDAY(シリアル値,種類)>などをどのように利用して 良いか分かりません。エクセル2000です。 質問内容がお分かりにくいかと思いますが アドバスの程よろしくお願いします。

みんなの回答

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

判りにくい質問表現と感じる。 日曜・土曜など考えずに、指定した日を除いたところの、期間(XX日からYY日まで)日数を出したいのか。 省きたい日の性格(というか名称、例、祝日とか土曜日とか)をはっきり書いて質問すること。 名称では頼りにならない(土曜でもカウントする日がある)のなら別シートにでも、除く日付一覧を作ったらどうだ。 その表の作成は面倒だがどのようにも対応できる。 ーー 除くのは日曜と祝日か、それも全部ではないならないで、はっきり書くこと。 例えば Sheet4に除外する日付を列挙する 2011/6/29 2011/7/23 2100/7/30 2011/8/11 ーー 例データとして Sheet3でB3:B5として 2011/6/22 39 2011/8/2 28 2011/8/31 C3 の式は =B3-B2-SUMPRODUCT((Sheet4!A2:A10>=B2)*(Sheet4!A2:A10<=B3)*1) を入れて下方向に式を複写する。 ーー 期間の指定曜日の数について http://www.geocities.jp/chiquilin_site/data/071101_specific_day.html に解説が有る。 土曜は必ず稼動するなら、上記除外表から日曜日の指定は省いて、上記の計算によって、期間内日曜日の数を引けば良い。 除外表が少なくなって、祝日+例外休日だけとかになる。

hirota3310
質問者

お礼

お礼が大変遅くなりました。 アドバイスいただいた内容参考にさせて頂きます。 質問内容に「稼働日数」と「日にち間隔」を記入していました(意味が違いますね)ので 一度、締め切って再度質問させて頂きます。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

NETWORKDAYSでは土日と祝日を除いた稼働日を計算することができますが、今回のご質問のように、すべての土曜日が休日にならない場合は適用することができません。 このようなケースでは、条件を自由に設定できる以下のような配列を使用した数式を利用する必要があります。 例えば、日曜以外(土曜日や祝日など)の休日リストに「休日リスト」という名前が定義されているなら(もちろん絶対参照の数式でもOKです)、以下の式を入力して下方向にオートフィルします。 =SUMPRODUCT((WEEKDAY((B3+ROW($A$1:$A$30)-1))<>1)*(B3+ROW($A$1:$A$30)-1<=B4)*((COUNTIF(休日リスト,B3+ROW($A$1:$A$30)-1)=0))) 上記の数式は、日付間隔が最大30日までを想定した式になっていますので、それ以上長い間隔がある場合は30の数字を適宜変更してください。 また、NETWORKDAYS関数と同様に、開始日と終了日の両方をカウントする数式にしていますので、元の数式のように単純な引き算(稼働日ではなく日付間隔)で良いなら全体から1を引いた数式にしてください。

hirota3310
質問者

お礼

お礼が大変遅くなりました。 アドバイスいただいた内容参考にさせて頂きます。 質問内容に「稼働日数」と「日にち間隔」を記入していました(意味が違いますね)ので 一度、締め切って再度質問させて頂きます。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

土曜、日曜、祝日などを除いた日数を計算することのできる関数としてWORKDAY関数があります。日曜だけを除いた計算よりも簡単に処理できますね。 祝日などの日付については例えばシート2のA1セルからA100セルの間に入力されているとします。 そこで、お求めの表のB4セルには次の式を入力して下方にオートフィルドラッグすればよいでしょう。 =IF(C4="","",WORKDAY(B$3,SUM(C$4:C4),Sheet2!A$1:A$100))

hirota3310
質問者

お礼

お礼が大変遅くなりました。 アドバイスいただいた内容参考にさせて頂きます。 質問内容に「稼働日数」と「日にち間隔」を記入していました(意味が違いますね)ので 一度、締め切って再度質問させて頂きます。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

=IF(OR(ISBLANK(B3),ISBLANK(B4)),"",NETWORKDAYS(B3,B4,祭日))  NETWORKDAYS関数・・・土曜、日曜及び祭日を除いた2つの日付の日数を求める関数 http://excel.onushi.com/function/networkdays.htm ※この関数は、「ツール」「アドイン」で「分析ツール」にチェックが必要です。

hirota3310
質問者

お礼

お礼が大変遅くなりました。 アドバイスいただいた内容参考にさせて頂きます。 質問内容に「稼働日数」と「日にち間隔」を記入していました(意味が違いますね)ので 一度、締め切って再度質問させて頂きます。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A