使用VBA检查excel 2016中的日期年表

时间:2018-06-14 19:29:01

标签: excel vba excel-2016

在excel中有两列数据,所有数据条目都是日期:

  • 第一栏J6至J100
  • 第二栏K6至K100

我需要确保第二列(K)中的日期不在第一列(J)中的日期之前。我不认为我可以使用条件格式。

使用VBA,我如何检查每对日期,然后如果该日期在J中的相应日期之前,则使K列中的单元格变为红色?

感谢您的帮助!如果有帮助,我在下面列出了一张图片。我认为K值是空白的并不重要,因为我想知道这些是否为空,代码会像其他日期变成红色那样读取。

截图:
enter image description here

4 个答案:

答案 0 :(得分:0)

假设您的工作表是sheet1,如果不只是更改工作表中的名称(“”)

Sub CompareDates()
     Dim Counter As Integer
     Dim myDate As Date
     Dim myDateCompare As Date

 For Counter = 1 To 100
 myDate = Worksheets("Sheet1").Cells(Counter, 10).Value 'Refers to Column J
 myDateCompare = Worksheets("Sheet1").Cells(Counter, 11).Value 'Refers to Column K
 If myDate > myDateCompare Then Worksheets("Sheet1").Cells(Counter, 11).Interior.ColorIndex = 46
 Next Counter
End Sub

答案 1 :(得分:0)

如果我理解正确的话,这将为前面的日期或它们是空白的。

Option Explicit
Public Sub Color()

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1") '---Name it whatever the sheet name is
Dim x As Integer

For x = 6 To 100
    If ws.Cells(x, 11).Value2 <= ws.Cells(x, 10).Value2 Then
        ws.Cells(x, 11).Interior.Color = RGB(255, 0, 0) '---colors the cell red
    ElseIf ws.Cells(x, 11).Value2 = "" Then
        ws.Cells(x, 11).Interior.Color = RGB(255, 0, 0) '---If you want to color the blank ones as well
    End If
Next x

End Sub

答案 2 :(得分:0)

此代码将检查两个日期并使K列中的单元格变为红色。 (它也会使空白单元格变红)

Sub Checkdates()
Dim i As Integer

For i = 1 To 11 'from row 1 to 11
    If Cells(i, 10) >= Cells(i, 11) Then 'Checks if the the statement "cell K > cell J" is true
    Cells(i, 11).Interior.Color = RGB(255, 0, 0) 'if the statement is true, then turn cell in column K to red
    End If
Next i
End Sub

答案 3 :(得分:0)

只是为了表明你可以使用条件格式化来实现这一目标......

  1. 选择范围&#34; K6:K100&#34;。
  2. 在条件格式设置下,添加&#34;新规则&#34;。
  3. 使用公式确定要格式化的单元格:
  4. 输入=K6<=J6作为公式,并将格式设置为红色填充。
  5. 在条件格式化之前 enter image description here

    条件格式化后

    enter image description here