VBA代码,用于根据一列中的If Then语句和另一列中的Cell Color的结果对数据进行排序

时间:2017-11-20 21:01:03

标签: excel vba excel-vba sorting

我正在尝试根据A列中IFERROR函数的结果和B列中的单元格颜色对我的数据进行排序。

在A列中,IFERROR正在另一个工作簿上执行VLOOKUP以检查匹配值。默认情况下,列A突出显示为红色,以及主工作簿中的一组其他先前突出显示的单元格。

基本上,这就是我试图实现的目标:

如果A列通过IFERROR功能并且突出显示红色且B列没有填充,则选择整行。我想要检查整个工作簿。

如果我没有多大意义,请原谅我,我很难将其写成文字。

2 个答案:

答案 0 :(得分:0)

由于必须单独评估每一行,因此您将拥有每两个单元格组合。

For i = 2 to lastrow
            If Range("A" & i).Interior.ColorIndex = RGB(255, 0, 0) And Range("B" & i).Interior.ColorIndex = xlNone And Not Application.WorksheetFunction.IsError(Range("A" & i)) Then 

    'do your code if all are true

    end if
Next i

答案 1 :(得分:0)

我明白了。

`

Range("A2:AH2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=ISERROR(A2)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .Color = 65535
    .TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False

Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
    "=ISNUMBER($A2)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .Color = 5287936
    .TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False`