2017-06-14 21 views
1

私のワークシートのDとE列の2つの日付を比較しています。日付の比較と結果のハイライト

列Dにはソース日付が含まれ、列Eには開始日が含まれます。

私は日付を比較する4つのケースがあります。

ケース1.収穫日が<の場合、開始日の2週間後に、プロジェクトを所定の時間内に印刷してください。

ケース2:ソース日付が開始日より4週間以上ある場合は、プロジェクトの遅延を印刷します。

ケース3:ソースの日付が開始日の2〜4週間の場合は、プロジェクトを印刷しています。私は上記の例のコードを導出している

は、今

ケース4:毎回列Eを日付で満たされていない、彼らは時々空です。

だから、どうすればここにnullステートメントを追加できますか? null文を追加しようとしましたが失敗しました。

以下はコードです。

Sub dateCompare() 

zLastRow = Range("D" & Rows.Count).End(xlUp).Row 

For r = 2 To zLastRow 

    zWeeks = (Cells(r, "E") - Cells(r, "D"))/7 
    Select Case zWeeks 
     Case Is > 4 
      zcolour = vbRed 
      Ztext = "Project Delayed " & Int(zWeeks) & " weeks" 
     Case 2 To 4 
      zcolour = vbYellow 
      Ztext = "Project Remaining" 
     Case Is < 2 
      zcolour = vbGreen 
      Ztext = "Project On-Time" 
     Case Else 
      zcolour = xlNone 
      Ztext = " Check Status" 
    End Select 

    Cells(r, "F").Interior.Color = zcolour 
    Cells(r, "F") = Ztext    
Next 

End Sub 

答えて

2

If Len(Trim(Cells(r, "E"))) = 0 Thenで列 "E" が空ではないzWeeksチェックを計算する前に。その後、Select Caseを使用してください。

また、最初のパラメータが"ww"(週)のDateDiff関数を使用して、列 "E"および "D"列のdat間の差を直接計算することができます。素晴らしいザッツ

コード

Option Explicit 

Sub dateCompare() 

Dim r As Long, zLastRow As Long 
Dim zWeeks As Double, zcolour As Long 
Dim Ztext As String 

zLastRow = Cells(Rows.Count, "D").End(xlUp).Row 

For r = 2 To zLastRow 
    If Len(Trim(Cells(r, "E"))) = 0 Then ' column "E" is empty 
     ' do something.... 
    Else ' column "E" is not empty 
     zWeeks = DateDiff("ww", Cells(r, "D"), Cells(r, "E")) 

     Select Case zWeeks 
      Case Is > 4 
       zcolour = vbRed 
       Ztext = "Project Delayed " & Int(zWeeks) & " weeks" 
      Case 2 To 4 
       zcolour = vbYellow 
       Ztext = "Project Remaining" 
      Case Is < 2 
       zcolour = vbGreen 
       Ztext = "Project On-Time" 
      Case Else 
       zcolour = xlNone 
       Ztext = " Check Status" 
     End Select 

     Cells(r, "F").Interior.Color = zcolour 
     Cells(r, "F") = Ztext 
    End If 
Next r 

End Sub 
+0

。出来た。ありがとうございました – Mikz

+0

そのケースに関しては、列AとBが存在し、列Dが存在する場合には、ケースを追加したいと思いますが、列Eに日付はありません。どうすればいい?申し訳ありませんが、私はこの要件を本当に遅く追加しています。 – Mikz

+0

@Mikzあなたはそのリクエストで新しい質問を投稿できますか?そうでなければ、ここに投稿は決して閉じられません。他のユーザー(と私)が –