Excel宏以比较两个日期(如果两列在同一行中具有特定文本)

时间:2018-12-11 06:41:57

标签: excel vba

我试图编写一个这样做的Excel宏; 1.检查列A的特定值 2.如果A列具有特定值(文本),则在B列中搜索同一行中的另一个文本值。 3.如果B列也有我们要查找的内容,则比较C列和D列中该特定行的日期。 (A和B列在同一行中有特定的文字)

基本上,宏将搜索一张纸的所有行。如果两列都有我们要查找的内容,并且发生在同一行中,则比较两个日期。

`If (COLA = val1) & (COLB = valb) Then;
     If COLC < COLD Then;
       Color the row to Red
     Else if COLC >= COLD Then;
       Color the row to Green
     Else
       Color the row to Yellow
     End If
Else 
     Color the row to Brown
End If`

| COLA | COLB | COLC |冷 | val1 | vala | 11.12.2018 | 20.12.2018 | | val1 | valb | 2018年10月10日| 2018年12月20日| | val2 | vala | 01.01.2019 | 15.02.2019 | | val3 | valc | 24.02.2019 | 11.02.2019 | | val2 | vald | 30.12.2018 | 20.12.2018 |

示例表

Screen Shot

1 个答案:

答案 0 :(得分:0)

Sub valsAndDates()
    With Worksheets("sheet5").Range("A:D")
        .FormatConditions.Delete
        With .FormatConditions.Add(Type:=xlExpression, _
          Formula1:="=and($a1=""vala"", $b1=""vala"", $c1<$d1, $c1<>text(,))")
            .Interior.Color = vbRed
        End With
        With .FormatConditions.Add(Type:=xlExpression, _
          Formula1:="=and($a1=""vala"", $b1=""vala"", $c1>=$d1, $c1<>text(,))")
            .Interior.Color = vbGreen
        End With
    End With
End Sub