2017-06-14 81 views
1

我正在比较我的工作表的D和E列中的两个日期。比较日期并突出显示结果

列D包含源日期和列E包含开始日期。

我有4个案例来比较日期。

案例1.如果巫师日期为< 2周的开始日期,则按时打印项目。情况2:如果源日期大于4周的开始日期,则打印项目延迟。情况3:如果源日期在开始日期的2到4周之间,则打印项目正在重新生成。

我已经导出了上述情况的代码,现在

案例4:不是每次的E列充满日期,它们是空的时候。

所以,我如何在这里添加一个空声明。我尝试添加一个空语句,但失败了。

以下是代码。

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

之前计算zWeeks检查列 “E” 是不是空的,与If Len(Trim(Cells(r, "E"))) = 0 Then。之后,使用您的Select Case

另外,您可以使用DateDiff函数(第一个参数为"ww"(星期))直接计算列“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你可以用这个请求发布一个新的问题,否则这里的帖子永远不会关闭。别担心,其他用户(和我)会跳到回答 –