Заполните цвет по сравнению двух разных ключевых слов - PullRequest
2 голосов
/ 30 сентября 2019

Я хочу закрасить всю строку, сравнив два столбца с разными ячейками текста. Как показано на изображении ниже, если я введу ввод в столбце 1 «ОПЛАТА» и в столбце 2 «ВЫПОЛНЕНО». Я хочу, чтобы весь ряд был залит зеленым цветом.

enter image description here

Мой код:

Dim itm As Range
Dim rw As Long
With Sheets("PO 2019_Vendor")
rw = .Range("A" & .Rows.Count).End(xlUp).Row

If .Range("AG" & rw).Value = "PAID" And .Range("AJ" & rw).Value = "DONE" Then itm.EntireRow.Interior.Color = 4

If .Range("AG" & rw).Value = "PAID" And .Range("AJ" & rw).Value = "NOTRCV" Then itm.EntireRow.Interior.Color = 6

If .Range("AG" & rw).Value = "PENDING" And .Range("AJ" & rw).Value = "DONE" Then itm.EntireRow.Interior.Color = 28

End With
End Sub

Надеюсь, вы понимаете мое объяснение и поможете мне. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Я бы посоветовал две вещи:

  • Цикл по Array: поскольку я не знаю, сколько строк вы хотели бы просмотреть, массивы должны быть значительно быстрее.
  • Не используйте свойство Color при использовании цветовых индексов. Вы либо хотите использовать Color или ColorIndex. Первый принимает значение Long, представляющее цвет RGB (или сам синтаксис RGB (..., ..., ...). Второе принимает индекс цвета из выбранной в данный момент цветовой темы. Смешивание Colorсвойство с индексным номером закрасит строку в черный цвет. Я полагаю, это то, что вы пытаетесь сделать.

Sub ColorRows()

Dim arr As Variant
Dim rw As Long, x As Long

With Sheet1 'Change according to your sheet's CodeName (see Project Explorer)
    rw = .Cells(.Rows.Count, "AG").End(xlUp).Row
    arr = .Range("AG1:AJ" & rw)
    For x = LBound(arr) To UBound(arr)
        If arr(x, 1) = "PAID" And arr(x, 4) = "DONE" Then .Rows(x).Interior.ColorIndex = 4
        If arr(x, 1) = "PAID" And arr(x, 4) = "NOTRCV" Then .Rows(x).Interior.ColorIndex = 6
        If arr(x, 1) = "PENDING" And arr(x, 4) = "DONE" Then .Rows(x).Interior.ColorIndex = 28
    Next x
End With

End Sub
1 голос
/ 30 сентября 2019

Если это столбцы AG и AJ, а заголовки в первой строке:

Sub erf()
Dim itm As Range
Dim rw As Long

    With Sheets("PO 2019_Vendor")

        rw = .Range("AG" & .Rows.Count).End(xlUp).Row

        For i = 2 To rw 'only if your headers are in 1 row

        If .Range("AG" & i).Value = "PAID" And .Range("AJ" & i).Value = "DONE" Then Rows(i).Interior.Color = 4

        If .Range("AG" & i).Value = "PAID" And .Range("AJ" & i).Value = "NOTRCV" Then Rows(i).EntireRow.Interior.Color = 6

        If .Range("AG" & i).Value = "PENDING" And .Range("AJ" & i).Value = "DONE" Then Rows(i).EntireRow.Interior.Color = 28

        Next

    End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...