• 締切済み

営業日のみの経過日数の求め方

営業日のみの経過日数の求め方 エクセルで土日祝日を除いて、今までの経過日数を出すにはどうしたら良いでしょうか?                 (1)予備のセルに「TODAY」 セル A1 (2)発生した日に日付      セル B2 (3)経過日数          セル C3    (1)ー(2)=(3)経過日数 という風にしたのですが、それだと営業日以外の土日祝日が入ってしまいます。 どのようにすればいいのでしょうか? よろしくお願いします。

みんなの回答

noname#144013
noname#144013
回答No.4

こんにちは。 #2です。 > たとえば開始日が2010/04/15 >     終了日が2010/05/04(TODAY) > だとすると経過日数が-28774日とでます。 これは憶測になりますが、 おそらく、NETWORKDAYS関数の引数に設定している参照元のセルの指定が 間違っている、または、セルの値が、日付の値(シリアル値)として、上手く認識 されていないように思われます。 こちらで、いろいろ試してみた結果、NETWORKDAYS関数の引数に、以下の ような値を設定した場合に、結果が -28774 と表示されました。 ※当方は、Excel2000を使用しています。  開始日付 : 2010/4/15 ←この値は正常  終了日付 : 0           ※参照元のセルを空欄にするか、または、0を入力した場合           ※ここは本来、TODAY関数で返される値  祭日    : 省略           ※祭日を省略した場合は、土・日のみ休日扱いになります。 ですので、質問者さんがご使用のExcelシートのA1セルの値、及び、祭日を 設定しているシートのセル範囲の値が、正しく設定されているか、または、 TODAY関数及びNETWORKDAYS関数の記述が正しいかどうか、再度、確認 された方が良いように思います。 念のため、使用していないセルに以下のような数式を入力して、表示される値 がどうなるか、それぞれ確認してみてください。   =NETWORKDAYS("2010/4/15",TODAY(),祝日!A1:A9)   =NETWORKDAYS("2010/4/15","2010/5/4",祝日!A1:A9)   =NETWORKDAYS("2010/4/15","2010/5/4")   =NETWORKDAYS("2010/4/15",0)   =A1 ←この数式を入力するセルの書式設定の表示形式は「標準」にする。        ※A1セルにTODAY関数が設定【数式: =TODAY()】されているなら、         表示値は 40302 と表示されると思います。         但し、現在日付が 2010/5/4 だった場合 あと、経過日数を表示するセルの書式の表示形式ですが、ユーザ-定義で 例えば、   0"日" とすると、マイナス値の場合でも表示されますが、#1,#3さんの言われるように   dd"日" または、 d"日" とすると、マイナス値の場合、#####~# と表示されます。 以上です。

wine12345
質問者

お礼

詳細をありがとうございます。 書式の設定を頭を冷やして見直してみました。 セルの設定をごちゃごちゃにしてしまっていたようです。 無事 日数が計算できるようになりました!

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

> たとえば開始日が2010/04/15 >    終了日が2010/05/04(TODAY) > だとすると経過日数が-28774日とでます。 こちらで祭日を設定しないと14日とでますし、祭日を設定したら11日とでます。 もしかしたら祝日!A1:A9に変な日付が設定されていないでしょうか。 あと、書式設定のユーザー定義でddとした場合負の数値になると####と表示されますが 負の数値が表示されるというのはどのようなユーザー定義にしているのでしょうか。

wine12345
質問者

お礼

ありがとうございます。 ユーザー定義が原因ではなく 終了日の日付を二か所に表記していたため、本来関数に設定するセル(TODAY)ではなく違うセル(TODAYではなく = で引っ張ってきたもの)を関数に入れ込んでいたためにおかしくなっていたようです。 凡ミスです。すみません。ありがとうございました。

すると、全ての回答が全文表示されます。
noname#144013
noname#144013
回答No.2

こんにちは。 > 終了日のセルに「TODAY」を入れているせいか正しい日数が出ません。 それは、エラー値(#NAME?、#VALUE! など)が表示されるのでしょうか? それとも、想定外の日数が表示されるのでしょうか? #1さんご提示のNETWORKDAYS関数を使用する場合は、下記の点に ついて確認してみて下さい。 まず、ご使用のExcelのバージョンがExcel2003以前だった場合は、 NETWORKDAYS関数を使用するためには、「分析ツールアドイン」を 組み込んでおく必要があります。 →これは、組み込み済みでしょうか? ※分析ツールアドインの組み込み方法は、Excelのヘルプをご覧下さい。 次に、「祭日」の日付を記述したセル範囲を用意する必要があります。 →これは、設定済みですか? ※日付は文字列ではなく、日付・時刻のシリアル値(年月日)として記入  されている必要があります。 次に、数式の記述の仕方ですが、以下のような記述になると思います。 →この記述は正しいでしょうか? <前提事項>  ・現在日付(終了日付:年月日)  : A1  ※注:下記1)の場合のみ  ・発生日付(開始日付:年月日)  : B2  ・経過日数(数式を設定するセル): C3  ・祭日を設定したセル範囲     : E2:E17 <数式の記述例> 1)A1セルにTODAY関数で現在日付を設定している場合   A1: =TODAY()   C3: =NETWORKDAYS(B2,A1,E2:E17) 2)NETWORKDAYS関数の引数で、直接TODAY関数を使用する場合   C3: =NETWORKDAYS(B2,TODAY(),E2:E17) 添付画像は、上記構成のExcecシートの画面例です。 ※見辛かったり、貼れていなかった場合はすみません。 以上です。

wine12345
質問者

補足

ありがとうございます。 >エラー値(#NAME?、#VALUE! など)が表示されるのでしょうか? それとも、想定外の日数が表示されるのでしょうか? 想定外の表示がされます。 たとえば開始日が2010/04/15     終了日が2010/05/04(TODAY) だとすると経過日数が-28774日とでます。(ちなみにユーザー定義で日と表示されるようにしています) Excelは2007でした。 祭日は別シートに作成したので =NETWORKDAYS(B2,A1,祝日!A1:A9) というようになっています。 きっと小さなミスなんでしょうが解消されません。。

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

=NETWORKDAYS(開始日,終了日,祭日) を利用してください。 参考 http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/today.htm

wine12345
質問者

補足

ありがとうございます! 終了日のセルに「TODAY」を入れているせいか正しい日数が出ません。 発生してから今日現在まで何日たっているかを出したいのですが、 この場合はまた関数が違うのでしょうか?

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

関連するQ&A