• ベストアンサー

【関数】開始日と完了日の両方が入力されたら。

開始日と完了日の両方が入力されたら、稼働日数を計算する関数がうまくいきません。 例)開始日・・・A1   完了日・・・B1 A1とB1の両方に入力されたら、「=NETWORKDAYS(A1,B1,祭日)」の計算をしたいのですが、どうしたら、良いでしょうか。 「IF」と「NETWORKDAYS」の両方は使えないですよね。。 また、A1とB1の両方が入力されなければ、「何もしない(空白のまま)」が良いのです。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.2

下記のような数式で可能ですが、ifとNETWORKDAYSが一緒に使用出来ないと思われた理由がわかりませんが。 =IF(COUNT(A1:B1)=2,NETWORKDAYS(A1,B1,$A$3:$A$25),"") 又は =IF(or(A1="",B1=""),"",NETWORKDAYS(A1,B1,$A$3:$A$25)) $A$3:$A$25は祝日や貴社の指定休日記載セル範囲又は名前の定義の名称を指定

mirinmirinmirin
質問者

お礼

=IF(or(A1="",B1=""),"",NETWORKDAYS(A1,B1,$A$3:$A$25)) ↑↑↑ こちらであれば、うまくできました! ありがとうございました! とても助かりました。

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

その他の回答 (2)

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.3

>「IF」と「NETWORKDAYS」の両方は使えないですよね。。 1つの数式に複数の関数を組み合わせることができます。 IF関数は条件分岐するための関数なので他の関数と組み合わせて使います。 >また、A1とB1の両方が入力されなければ、「何もしない(空白のまま)」が良いのです。 NETWORKDAYS関数は祭日リストを指定することで土、日、祭日を除く実働日数を算出するものです。 =IF(AND(COUNT(A1:B1)=2,A1<=B1),NETWORKDAYS(A1,B1,F1:F17),"") この数式ではF1:F17に2016年の祭日を列記しています。 また、当日開始で当日完了の場合は稼働日数が1日になります。 開始日>完了日のときは負数になるので計算しないようにしています。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

IFで両方入力されたかどうか、判断はできますか? できるのであれば、両方入力されたときに実行する命令で稼働日を求めればいいかと思います。

mirinmirinmirin
質問者

補足

単純に「完了日-開始日」ではなく、祭日も除くとしたいので、IFだけで、どうもうまくいかないのです。。。

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

関連するQ&A

  • エクセルの関数について教えてください。

    Excel2003で質問です。 以前、NETWORKDAYSという関数で、稼動日の計算をしていました。 そのファイルを今日久々にみたところ、数値がエラー(#NAME)になっていたのですが・・何故でしょう。 ちなみに計算式は =NETWORKDAYS(開始日,終了日,祝祭日のリスト) です。 修正しようと、関数を全て表示にしたところ「NETWORKDAYS」の関数が見当たらないのですが・・仕事で使っているので困っています。 わかるかた教えてください。

  • 出勤日数を数える関数を教えてください

    セルB1~B30 に↓関数を入れ、平日の始業時間に8:00が入るようにし、土日祝には時間が入らないようにしてあります。 関数:=IF(OR(WEEKDAY(A35,3)>=5,NOT(ISERROR(MATCH(A35祝日,0))))=TRUE,"","8:00") セルB32 に有給日数を手入力し、セルB31 に実際に稼動した日数を入れるようにしたく、 下記の関数を入力したところできませんでした。。 関数:=COUNTIF(B1:B30,">""0")-B32 他にどのような関数でしたら、きちんと稼動日数をカウントできるでしょうか?

  • Excel2010 平日を取得する関数について

    カテゴリーを知らなくてWindows7に質問したので変更しました。 平日の日数を取得する関数は、NETWORKDAYSで取得できますが、開始日と終了日を入力しなければならず、月毎に変わる日数の開始日と終了日を関数式に入力できないので、年月を表示しているのでそれを利用してできる方法はないでしょうか。 また、土日祝日の日数を取得する関数があれば教えてください。

  • エクセル2000 の関数について

    お世話になります。 NETWORKDAYS関数を使って、土日・祝日を除く日数をカウントするのは、過去の質問から分かったのですが、 その他の条件として、土曜出勤の日が含まれている場合には、 プラスして計算したい場合は、どうすればよろしいでしょうか? エクセル2000のバージョンを使っています。 A列に開始日  B列に終了日  C列に日数 ※E列の日付が含まれていたら除く ※F列の日付が含まれていたら1日プラスする。  A列      B列      C列     E列      F列 1 開始日    終了日    日数    祝日      土曜出勤日 2 2006/08/01  2006/08/11  **     2006/07/17   2006/07/22 3 2006/08/11  2006/08/18  **     2006/08/14   2006/08/19 4 2006/08/14  2006/08/25  **     2006/08/15 5 2006/08/17  2006/08/25  **     2006/09/18 よろしくお願いします。

  • DATEDIF関数について

    excel2007を使用し、日数の計算をしようとDATEDIF関数を使ってみました。日数に+1をした○日間を出したく、そのように関数を入れて無事に表示されましたが、空白欄には+1が並んでしまうのはやむを得ないのでしょうか? 開始日・終了日+1日(○日間)を出したく、開始日は入力済みのセルもあるのですが、終了日をにゅうりょくした時点で、○日間を表示させたいセルを日数を表示 ということがしたく。 ご存じの方がいらっしゃいましたら、お力を貸してください!!!

  • エクセルの関数(AVERAGE)について質問です。

    エクセルの関数(AVERAGE)について質問です。 エクセル2007を使ってこのような、表を作りました。     A     B     C      D 1  入院日   退院日  在院日数   区分 2 2010/3/2  2010/5/8  68     (1) 3 2010/4/18  2010/5/9  22     (5) 4          … と、100行分まで表があります。 Cの『在院日数』は「退院日-入院日+1」で計算します。 計算式は『=IF(B1="","",B1-A1+1)』といれてみました。 在院日数を求めるのはこれでうまくいくのですが、 問題は、この在院日数の平均を求めることがうまくいかないのです。 以前、エクセル2003を使っていたときは 普通に『=AVERAGE(C2:C101)』でうまくいっていたと思うのですが エクセル2007にしてからは 空白のセルも、計算式が入っているせいか、数値があると認識してしまうらしく 80行までしか入力されていない時は、81から100行までの分を0と考え 1行目から100行目までの値を足し、100でで割られた値が出てきてしまいます。 どうしたら、空白のセルは計算せずに平均値を出すことが出来ますか? それと、もう一つ質問があり 区分では、(1)~(8)を入力するのですが この、区分の(1)と(3)だけを選んで平均値を出したい ということもしたいのですが どうしたらよいでしょうか? (1)だけなら、AVERAGEIFを使えばと思うのですが (1)と(3)という時は、どういう風にしたらいいのか教えて下さい。

  • エクセルのワークシート関数で最小値

    エクセルのワークシート関数でA1セルとB1セルの最小値を求める場合 =MIN(A1,B1) だと思います。 しかし、これではどちらかのセルが空白だった場合、空白セルを0とみてはくれません。 そのため =MIN(A1*1,B1*1) と、1を乗ずることで空白セルを0にして比較できます。 しかしA1、B1セルの値が直接入力されたものでなく計算の結果の場合にはうまくいかない場合があります。 A1、B1ともに計算式がはいっているので空白はあり得ないのですが、計算結果で =”” と空白表示の場合、空白表示セルを0とみてはくれません。 しかし、空白表示セル(=””)に1を乗ずるとVALUEエラーになってしまいます。 やむを得ず、IF関数を使い =MIN(IF(A1="",0,A1),IF(B1="",0,B1)) と、無理やり=””を0にしているのですが、ほかになにか良い方法はないでしょうか? A1、B1の計算式を変えて=0とすればよいのでしょうが、元の計算式を変えずにやる方法があれば御教示ください。

  • 開始日を入力したセルと終了日を入力したセルがあり関数で開催日全ての日程

    開始日を入力したセルと終了日を入力したセルがあり関数で開催日全ての日程をカンマ区切りでひとつのセルに表示させたいのです A1 2010/9/8  B1 2010/9/10  C1  2010/9/8,2010/9/9,2010/9/10 のように表示させたくて セルA1に開始日、セルB1に終了日、 セルC1に =CONCATENATE(A1,",",A1+1,",",B1) と入力したところ 「40429,40430,40431」と表示されてしまいました セルの表示形式は「日付」です 日付の形式で表示させるにはどうしたらいいのでしょうか また日程は3日だけでなく5日のものもあるので もっといい方法があったら教えていただけると助かります 1000行以上あるので面倒くさいんです。助けてください

  • Excelの関数について

    Excelの関数について教えてください。 C1に50、D1に30、E1に=SUM(A1:D1)、B2に=E1-SUM(A1:B1)、が入力されています。 このB2の計算式を、「もしB1:C1のどちらか片方(もしくは両方)に値が入力されているときはB2の計算式の結果が返ってくる。B1:C1のどちらも空欄のときは「#N/A」が返ってくる。0は入力有りとみなす」というようにしたいです。 IF関数にISBLANK関数を入れてみたんですが、片方に入力有りでも「#N/A」が返ってきてしまいます。 =IF(ISBLANK(B1:C1),NA(),E1-SUM(A1:B1)) ISBLANK関数じゃダメだったんでしょうか? どういうふうに変えればいいんでしょうか? すみませんがどなたか教えてください。

  • excel2007 特定の曜日をカウントしたい

    excel2007で、ある期間内における特定の曜日の数を求めるための、 関数もしくは計算式を教えてください ただし、NETWORKDAYS.INTL関数はexcel2010以降に登場した関数のため、 それ以外でお願いします また、初心者なので、 なるべく原理も教えていただければ幸いです ちなみに、A1とB1に開始日と終了日を代入して =A1-B1+1-NETWORKDAYS(A1,B1) の様にやってみましたが、上手くいきませんでした。

専門家に質問してみよう