• ベストアンサー

VBAで稼働日を表示したいのですが・・・

VBAで稼働日を求めたいのですがうまく出来ずに困っています。 A列:日付2008/1/1~2009/3/31まで入っています。 B列:『休』とお休みに該当した日をいれます。(土日とは限らない) 例として1月1日(A1セル)が休みとしたらB1セルに『休』と入れお休み表にします。 C列:適当な日を手入力します。(規則性は全く無し) D列:C列の3稼働日後を入れたいです。 AやB列からどうスキャンし3稼働日後を出したらよいのか… 説明だと分かりづらいかもしれませんのでこんな感じの結果を得たいエクセルがあるので見ていただいた方が分かるかとも思います。 どなたかヒントでもあれば教えて下さい。 お願いします。 http://briefcase.yahoo.co.jp/bc/robert_kubica_bmw/vwp2?.tok=bclxRHbB_q.izEUN&.dir=/&.dnm=%b2%d4%c6%af%c6%fc.xls&.src=bc

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

A列の日付が漏れなく入っている事を前提にしてます。 C列の日付から、A列の日付位置(R1)を計算して、そこから稼働日(Count)を探し始めます。 見つかった位置をD列に記入します。 Sub sample() Dim Count As Integer Dim R1 As Long Dim R2 As Long R2 = 2 Do While Cells(R2, 3) <> "" R1 = DateDiff("d", Range("A2"), Cells(R2, 3)) + 2 Count = 0 Do If Cells(R1, 2) <> "休" Then Count = Count + 1 If Count = 3 Then If IsDate(Cells(R1, 1)) Then Cells(R2, 4) = Cells(R1, 1) End If Exit Do End If End If R1 = R1 + 1 Loop R2 = R2 + 1 Loop End Sub

その他の回答 (1)

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.1

A列で、C列と同じ値のセルを探し、そこを基準に下に向かって順に調べていき、1行ごとに、B列に『休』があるかどうかを調べて、無かったらカウンタをカウントアップして、3稼働日後になったらそのときのA列の値をD列に記入すれば良いです。 特に難しくも無いですよね? そのまま素直に考えれば良いだけです。