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

Макрос заливки строки в зависимости от значения в колонке
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
