Під час роботи з таблицями 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
