Как сгруппировать строки, соответствующие одному из двух условий? - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь написать макрос для группировки строк, заполненных одним из двух цветов (белый / RGB (255,255,255) или бледно-желтый / RBG (255, 255, 238)).Но когда я запускаю свой макрос, он группирует только бледно-желтые строки.

Фиксированный код (благодаря @Vityata):

Option Explicit

Sub RowGrouper()
Dim rng As Range
Dim lastRow As Long
lastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

For Each rng In Range(Cells(10, 1), Cells(lastRow, 1)).Cells
    If rng.Interior.Color = RGB(255, 255, 255) Or rng.Interior.Color = RGB(255, 255, 238) Then
        rng.Rows.Group
    End If
Next

End Sub

Конечный результат должен выглядеть следующим образом:

enter image description here

Я ценю любую помощь, которую вы можете мне оказать.

Ответы [ 2 ]

3 голосов
/ 05 апреля 2019

Из этого:

rng.Interior.ColorIndex = rng.Interior.Color = RGB(255, 255, 255)

Напишите это:

rng.Interior.Color = RGB(255, 255, 255)
1 голос
/ 05 апреля 2019

Сделайте попытку - мне легче сначала набросать целый диапазон перед группировкой.

Я вижу, что Витя нашел опечатку, но у меня есть , чтобы опубликовать мое решение в любом случае! :)

Option Explicit

Sub RowGrouper()

    Dim i As Long, j As Long, lastRow As Long

    lastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

    For i = 10 To lastRow
        For j = i To lastRow
            If Cells(j, 1).Interior.Color <> RGB(255, 255, 255) And Cells(j, 1).Interior.Color <> RGB(255, 255, 238) Then
                If j <> i Then
                    Rows(i & ":" & j - 1).Rows.Group
                    i = j
                    Exit For
                Else
                    i = i + 1
                End If
            End If
        Next j
    Next

End Sub

img1

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