删除具有特定单元格颜色的行 - CONDITIONAL FORMAT COLOR

时间:2017-01-05 11:43:33

标签: vba excel-vba colors excel

规则1:删除行A列中的IF单元格为绿色,列J包含术语" SA注释 - "只是包含不完全那么删除行。  然后规则2:删除列A中的行IF单元格为红色和列J不包含术语" SA注释 - "然后删除行。  然后规则3:如果J列中的单元格没有值那么添加术语" Sa评论 - "任何没有价值的细胞。

这些单元格是否用条件格式填充为红色?

我明白我需要用户Instr?如果我没有找到完全匹配。

Sub sbDelete_Rows_Based_On_Cell_Color()

Dim lRow As Long
Dim iCntr As Long

lRow = 9999
For iCntr = lRow To 1 Step -1
    If Cells(iCntr, 1).Interior.ColorIndex = xlNone And Cells(iCntr, 10).Value = "SA Comments -" Then
    '2 = None
    Rows(iCntr).Delete

    ElseIf Cells(iCntr, 1).Interior.ColorIndex = 3 And Cells(iCntr, 10).Value <> "SA Comments -" Then
        '4 = Red
        Rows(iCntr).Delete
    End If

Next iCntr

End Sub

1 个答案:

答案 0 :(得分:1)

以下代码适用于我,只需确保您在A列的单元格中有Interior.Color为4。

不确定,但您希望与“SA评论”完全匹配或部分匹配?

您是否在检查A列内部颜色的同时在J列中查找文本?

Private Sub CommandButton21_Click()

Dim lastrow As Long

With ThisWorkbook.Worksheets("Outstanding Aged Incidents")
    ' reading last row with data from Column A
    lastrow = .Cells(.Rows.Count, 1).End(xlUp).Row

    For i = lastrow To 2 Step -1            
        If .Cells(i, 10).Value = "SA Comments -" And .Cells(i, 1).Interior.Color = 4 Then
            .Rows(i).Delete
        End If        
    Next i
End With

End Sub

编辑1 :如果您正在寻找“SA评论 - ”的部分匹配,您有两种选择:

Instr - 请使用以下行:

If InStr(.Cells(iCntr, 10).Value, "SA Comments -") > 0 Then

- 请使用以下行:

If .Cells(iCntr, 10).Value Like "*SA Comments -*" Then

编辑2 :修改后的代码,以适应自原始帖子以来PO上传的代码。

Sub sbDelete_Rows_Based_On_Cell_Color()

Dim lRow As Long
Dim iCntr As Long

lRow = 9999
For iCntr = lRow To 1 Step -1
    If Cells(iCntr, 1).Interior.ColorIndex = xlNone And InStr(Cells(iCntr, 10).Value, "SA Comments -") > 0 Then
    '2 = None
    Rows(iCntr).Delete

    ElseIf Cells(iCntr, 1).Interior.ColorIndex = 3 And InStr(Cells(iCntr, 10).Value, "SA Comments -") > 0 Then
        '4 = Red
        Rows(iCntr).Delete
    End If

Next iCntr

End Sub