エクセルで開始日と工数(日数)を入力すると稼働日の終了日が自動的に入力される方法
指定日から指定日数を指定すると
自動的に換算されて終了日が表示される。
エクセルでそれを実現する方法を解説します。
これは、お仕事や勉強など色んなシーンで活用できるかと思います。
今回は工事関連のシーンで説明しますが、うまく応用してください。
また、いざ実装してみるとなんかずれてない?と
感じる場合もあるかと思います。
自分もなんでずれてるの?と感じた部分でしたので
その点についても触れていきたいと思います。
結論からお話すると、「WORKDAY関数」を使うことで解決します。
まず、完成図をお見せします。
こんな感じで工数の箇所と、開始日を入力すると
自動的に終了日が表示されます。
でも、上下で終了日が違います。
これは後ほど解説します。
まずは下の行から解説します。
①入力箇所を作る
まずは、日数を入力する箇所と、開始日を入力する箇所、そして、終了日を入力する箇所を用意してください。
工数のセルは、右クリックして「セルの書式設定>表示形式>ユーザー定義」で、
「#"日"」としています。
そうすることで、数字を入力すると自動的に6日といった感じで表示されます。
開始日と終了日のセルは、同じく、右クリックして「セルの書式設定>表示形式>ユーザー定義」より、
「m/d(aaa)」と指定しています。
すると日付を入力すると、自動的に7/27(木)といった感じで表示されます。
②別シートに非稼働日を設定するシートを用意する
シート名は、何でもよいですが、自分は「設定」としてます。
そして、非稼働日も縦に1列入力するようにすればOKです。
こんな感じです。
③終了日に関数を入力する
終了日のところに、このような関数を入力しています。
「=IF(C7="","",WORKDAY(E7,C7,設定!D4:D24))」
IFで2つの条件を指定しています。
「C7="",""」が一つ目
これは、C7がもし空欄だった場合は、結果も空欄にするコマンドです。
これを指定していない場合、終了日に0とかエラーとか表示されることがあります。
例えば、複数行を作成している場合、
何かしらの提出書類だった場合、
何も入力してない箇所なのに余計な文字が入っていたら
都合が悪かったりします。
それを解消するため、IFでこのように指定しておくと
未入力の場合は同様に結果欄も空欄になります。
続いて、後ろの部分「WORKDAY(E7,C7,設定!D4:D24)」について、
これの記述の基本は、「WORKDAY(開始日, 日数, [祝日])」となります。
つまりE7が開始日、C7が日数(工数)、「設定!D4:D24」が非稼働日(祝日)の一覧となります。
Hiro先生の作成した内容では、
工数=6日=C7、開始日=7/27(木)=E7、非稼働日=7/27(木)=「設定!D4:D24」
となりますので、7月27日からスタートですが、非稼働日になっているので28日が初日となるので、
28、29、30、31、1、2、となるかと思うところですが、結果は8月4日になってます。
これはなぜかというと、カレンダーを見ると29、30は、土日で週末休みのためそこはカウントされないため
結果4日となるのです。
WORKDAYの関数を使う場合は、自動的に土日が除かれます。
人によっては、土日は稼働で定休日は別の日なので、
これだと都合が悪いという方もいらっしゃいます。
その場合は、定休日を別で指定することも可能な方法があります。
週末じゃなく定休日を他の日にしたい場合は、「WORKDAY.INTL」を使う
一番最初の方で完成版をお見せしましたが、
1行目と2行目の結果が違っていたかと思います。
先ほど説明した2行目は、WORKDAY関数を使った週末休日の場合の結果です。
1行目は、WORKDAY.INTL関数を使って週末休日ではなく、
水曜休日にした場合の結果です。
では、解説していきたいと思います。
まず、入力している関数をお見せします。
「=IF(C6="","",WORKDAY.INTL(E6,C6,14,設定!D3:D23))」
基本は、WORKDAYで解説したものと同じですが、
一つだけ違う部分があります。
「14」と入力してある箇所で、水曜休日を指定してます。
この14を削除して1を入力してみると、下に休日候補一覧が表示されます。
14は水曜になっています。
ここをご自身の内容に合うように設定してみてください。
望み通りの結果となります。
是非、お試しください。