首页 > 解决方案 > 如果两列在同一行中有特定文本,Excel宏比较两个日期

问题描述

我试图编写一个 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`

|可乐 |COLB | COLC | 冷 | |val1 |vala |11.12.2018 |20.12.2018 | |val1 |valb |10.10.2018 |20.12.2018 | |val2 |vala |01.01.2019 |15.02.2019 | |val3 |valc |24.02.2019 |11.02.2019 | |val2 |vald |30.12.2018 |20.12.2018 |

示例表

截屏

标签: excelvba

解决方案


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

推荐阅读