Различные способы окрашивания автоматически отфильтрованных ячеек в столбце таблицы в красный цвет - PullRequest
0 голосов
/ 21 июня 2020

Сценарий:

Отчет с разными заголовками - имена заголовков остаются неизменными, но номер столбца может отличаться - поиск отсутствующих / пустых ячеек / данных после применения различных автофильтров. Наконец, закрасьте отсутствующие / пустые данные / ячейки в красный цвет, который передается пользователям для заполнения.

Требуется руководство: у меня есть два способа выбора данных в диапазоне автоматической фильтрации для применения красного цвета. Есть fl aws в обоих случаях, если автофильтр не возвращает никакого результата, он применяет цвета ко всем ячейкам в столбце. Любые другие способы выбора диапазона автоматической фильтрации

1-й способ: использование DataRangebody

With ActiveSheet.ListObjects("Table_query__57")
.Range.AutoFilter Field:=a, Criteria1:=Array("Barclays", "HSBC", "Lloyds"), Operator:=xlFilterValues
.ListColumns(p).DataBodyRange.Interior.Color = RGB(255, 0, 0)

2-й способ: использование номера столбца вниз и go вверх

With ActiveSheet.ListObjects("Table_query__57")
    .Range.AutoFilter Field:=a, Criteria1:=Array("Barclays", "HSBC", "Lloyds"), Operator:=xlFilterValues
Range("Q4:Q" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Interior.Color = RGB(255, 0, 0)

1 Ответ

0 голосов
/ 21 июня 2020

Попробуйте следующий подход, пожалуйста. По сути, он сравнивает количество строк фильтра с общим количеством строк для столбца, который нужно проанализировать / обработать:

Sub testFilteredOrNot()
  Dim sh As Worksheet, rng As Range, rngF As Range, lastRow As Long
   Set sh = ActiveSheet
   
   lastRow = sh.Range("A" & Rows.Count).End(xlUp).row
   
    '...............
    'do here the filtering...
    '...............
    
   Set rng = sh.Range("Q4:Q" & lastRow)
    Set rngF = rng.SpecialCells(xlCellTypeVisible)
    If rng.Rows.Count > rngF.Rows.Count Then
        rngF.Interior.Color = RGB(255, 0, 0)
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...