2017-07-10 15 views
0

結果として名前のシートがあります。このシートで 日付とケースの比較とDatedifferenceメソッド

は、私がs.Dateと列Hを持っていると私はいつか空の行を持つ列I.

列Hが完全に充填されると、列に日付を起動します。

私は、下記のような場合があります。

Case1。開始日がS.Dateより> 4週間の場合、それはオンタイムで緑色で表示されます

case2:開始日がS.Dateの> 8週間である場合、遅延です。

ケース3:開始日が4〜8週間の場合、残りの部分は黄色です。

ケース4:開始日がS.dateより前の場合、この場合も緑色になります。

上記の3つのケースはすべて達成されていますが、私は4番目のケースを達成する方法に打撃を受けます。 誰も私がそれをやり遂げる方法を提案することができます。参照のために画像も添付してください。私はこれを既に投稿しましたが、私の疑いを明確にするためにpostive repsonseやChatはありません。申し訳ありませんが、私はこの問題を明確にしたいと思います。フォーラムの助けを期待する。

Option Explicit 

Sub status() 
    Dim ws As Worksheet 
    Dim lrow As Long, i As Long 
    Dim zWeeks As Double, zcolour As Long 
    Dim Ztext As String 
    Set ws = Sheets("Result") 
    With ws 
     lrow = .Range("H" & .Rows.Count).End(xlUp).Row 
     For i = 5 To lrow 
      zWeeks = DateDiff("ww", .Range("I" & i).Value, .Range("H" & i).Value) 
      If .Range("E" & i).Value <> "" And .Range("F" & i).Value <> "" And .Range("I" & i).Value = "" Then 
       Ztext = "remaining" 
       zcolour = vbYellow 
       Cells(i, 11) = "Yellow" 
      ElseIf .Range("F" & i).Value = "" And .Range("I" & i).Value = "" Then 
       GoTo nextrow 
      ElseIf zWeeks < 4 Then 
       Ztext = " on time" 
       zcolour = vbGreen 
       Cells(i, 11) = "Green" 
      ElseIf zWeeks > 8 Then 
       Ztext = " delayed" 
       zcolour = vbRed 
       Cells(i, 11) = "Red" 
      ElseIf zWeeks > 4 < 8 Then 
       Ztext = "Remaining" 
       zcolour = vbYellow 
       Cells(i, 11) = "Yellow" 
      End If 
      With .Range("J" & i) 
       .Value = Ztext 
       .Interior.Color = zcolour 
      End With 
nextrow: 
     Next i 
    End With 
End Sub 

The Image below Shows the result that is needed. Could someone help to achieve the last case, as mentioned.

答えて

0

限り私は理解し、ケース4は、上から負の値を返す必要がありますので、 以下のように条件を使用することができますもう一つの式

zdays = DateDiff("d", .Range("I" & i).Value, .Range("H" & i).Value) '**Checknotes below 

elseif zweeks < 0 or zdays < 0 or zdays = 0 then 
    Cells(i, 11) = "Green" 
End if 

を追加します**注意事項: 1.同じ週内の日付を処理します。 2.負の値を返します。

+0

私の場合は数週間ではなく、日数を使うことができますか? – Mikz

+0

これは私のコードでどこに追加しますか? @nishit dey – Mikz

+0

負の数値を返していません – Mikz

関連する問題