Автоматическое закрашивание строк в Excel

Автоматическое закрашивание строк в Excel в зависимости от значения ячеек (ТОП-5 / ТОП-10)

При работе с таблицами Excel часто возникает необходимость быстро визуально оценить большие объёмы данных. Особенно это актуально для анализа позиций сайта в поисковой выдаче, когда важно сразу видеть, какие запросы находятся в ТОП-5, какие — в ТОП-10, а какие требуют доработки.

Стандартное условное форматирование Excel не всегда подходит для таких задач, особенно когда нужно применить заливку сразу ко всей строке, а не только к отдельной ячейке. В таких случаях на помощь приходит VBA-макрос, который позволяет автоматизировать форматирование и гибко управлять логикой подсветки данных.

В этом материале представлено готовое VBA-решение, которое анализирует значения в заданной колонке и автоматически раскрашивает все заполненные ячейки строки в разные цвета в зависимости от позиции: зеленый для ТОП-5, жёлтый для ТОП-10 и красный для других значений. Макрос прост в использовании и легко адаптируется под собственные нужды.

Пример использования макроса автозаливки строки

Автозаливка строки в Excel

Макрос заливки строки в зависимости от значения в колонке

Sub ColorRowsByPosition()

    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim pos As Double
    Dim lastCol As Long

    Set ws = ActiveSheet

    ' Последняя заполненная строка в колонке E
    lastRow = ws.Cells(ws.Rows.Count, "E").End(xlUp).Row

    For i = 2 To lastRow

        ' Проверяем, что в ячейке число
        If IsNumeric(ws.Cells(i, "E").Value) Then

            pos = CDbl(ws.Cells(i, "E").Value)

            ' Последняя заполненная колонка в текущей строке
            lastCol = ws.Cells(i, ws.Columns.Count).End(xlToLeft).Column

            ' Очищаем старую заливку
            ws.Range(ws.Cells(i, 1), ws.Cells(i, lastCol)).Interior.Pattern = xlNone

            Select Case pos
                Case 0 To 5
                    ws.Range(ws.Cells(i, 1), ws.Cells(i, lastCol)).Interior.Color = RGB(146, 208, 80) ' зелёный
                Case Is <= 10
                    ws.Range(ws.Cells(i, 1), ws.Cells(i, lastCol)).Interior.Color = RGB(255, 255, 0) ' жёлтый
                Case Else
                    ws.Range(ws.Cells(i, 1), ws.Cells(i, lastCol)).Interior.Color = RGB(255, 102, 102) ' красный
            End Select

        End If

    Next i

End Sub

Main Menu