• ベストアンサー

エクセルでn稼働日後の日付を表示

使用しているエクセルのバージョンは2003です。 n稼働日後の日付を表示したいのですが、 土日が稼働日だったり、平日で休みの日があったりする 場合を考えたいので、WORKDAYが使えません。 皆様、知恵を貸していただけないでしょうか。

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

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

土日が稼働日だったり平日で休みが有ったりで一定の規則性がないわけですから例えばシート1にお求めの式を入力するとして、シート2にはデータベストなる表、カレンダー表示、を作ります。 シート2のA1セルには西暦年を2011のように入力します。 A2セルには次の式を入力して下方にオートフィルドラッグします。 =DATE(A$1,1,ROW(A1)) B2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",TEXT(A2,"aaa")) B列には曜日が表示されます。 C2セルから下方にはその日が出勤ならば出の文字を入力します。初めから出の文字をC2セルに入力して下方にオートフィルドラッグしておき休みなどの日にはその文字を消してもよいでしょう。 D2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(C2<>"出","",COUNTIF(C$2:C2,"出")) これでデータベースとなる表が出来上がりました。 そこで例えばシート1のA1セルに日付を入力してその日からn稼働日後のnに当たる日数をB1セルに入力してC1セルにその答えとなる日付を表示させるとしたらC1セルには次の式を入力します。 =INDEX(Sheet2!A:A,MATCH(IF(VLOOKUP(A1,Sheet2!A:D,4,FALSE)="",MIN(INDEX(Sheet2!D:D,MATCH(A1,Sheet2!A:A,0)):Sheet2!D1000)-1,VLOOKUP(A1,Sheet2!A:D,4,FALSE))+B1,Sheet2!D:D,0)) 上の式ではA1セルに入力した日が出勤日でない場合でも計算できるように工夫しています。

kiyohara355
質問者

お礼

中身はほとんど分かってないのですが・・・・ 内容の通りやってみると、出来ました! 任意の日付けから数えられるのがすばらしいと思いました。 ありがとうございます。

その他の回答 (2)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 先ずは1年分のカレンダを作成(日付列、通算営業日列) カレンダ例  日付 休日 通算日(休日列に休みならば1を入力)  1/1  1   1 =IF(B1<>"",COUNTIF($B$1:B1,B1),"")として下方向にコピー  1/2  1   2  1/3     1/4  1   3  1/5   1/6  1   4 (1)開始日付でカレンダを検索、基準通算日を取得、基準通算日+n日で通算 (2)その値+n日でカレンダの通算営業日列を検索して日付を取得   仮に1/1で3日後の場合、通算日が4(1+3)で通算日列を検索して1/6を取得する   方法は如何でしょうか。

kiyohara355
質問者

お礼

hakasedesuyo さんと同じ感じでしょうか。 あらかじめカレンダーを作っといて、基準日から稼動日で加算された日で表示する感じですね。 アドバイスありがとうございます。

回答No.1

  [A列]    [B列]    [C列] 1  =C1  12/1    1  (稼動) 2  =A1+C2  12/2    0  (休日)  3  =A2+C3  12/3    1 汎用性は微妙かもしれませんが、 上記のようなテーブルを作成すれば vlookupで参照可能だと思われます(^ν^) ※タイトル行は省いてます。 =vlookup(n稼働日,A1:C3.2.false) 分かりにくかったらごめんなさい。

kiyohara355
質問者

お礼

私がエクセル初心者なので、見当違いなこといったらごめんなさい。 なるほど~基準となる日が固定であれば、n日後の表示が出来ますね。

kiyohara355
質問者

補足

お礼を言ってませんでした。 アドバイスありがとうございます。

関連するQ&A

専門家に質問してみよう