Автоматичне зафарбування рядків

Автоматичне зафарбування рядків в 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