4

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

Что-то вроде этого:

Было бы полезно просто знать, активен ли фильтр, а знать, к каким столбцам применены активные фильтры, было бы обледенением. В идеале они обновляются автоматически.

У меня нет владения электронной таблицей, поэтому я не могу вносить существенные изменения в ее структуру или что-то еще, кроме VBA.

Есть идеи?

1 ответ1

4

Я считаю, что это возможно только с VBA.

Я также предположил бы, что вам не нужно проверять, применяется ли автофильтр в правильном диапазоне (см. Дальнейшее чтение), и что вам не нужно проверять , активен ли AUTOFILTER или нет (т.е. нет стрелок, нет автоматического фильтра ),

Вот пользовательская функция, которая проверяет, есть ли какие-либо активные фильтры на листе и, если они есть, отображает, какие столбцы были отфильтрованы. Я уверен, что есть лучшие функции там; Возможно, вам придется изменить его в соответствии с вашими потребностями.

Function CheckFilters(r As Range) As String

Set AWS = ActiveSheet
fstate = ""

If AWS.FilterMode Then
    c = AWS.AutoFilter.Filters.Count

    'go through each column and check for filters
    For i = 1 To c Step 1
       If AWS.AutoFilter.Filters(i).On Then
            fstate = fstate & r(i).Value & ", "
       End If
    Next i

    'removes the last comma
    fstate = Left(fstate, Len(fstate) - 2) 
Else
    fstate = "NO ACTIVE FILTERS"
End If

CheckFilters = fstate

End Function

Чтобы использовать его, введите FF. формула в пустую ячейку:

=CheckFilters(A3:E3)&LEFT(SUBTOTAL(9,A3:A48),0)

Где A3:E3 содержит метки столбцов для ваших данных (см. Пример ниже)

Часть &LEFT(SUBTOTAL(9,A3:A48),0) формулы не служит никакой видимой цели, кроме как заставить ячейку пересчитывать "автоматически" при смене фильтров. (Благодарю Шона Чешира за предложение). Обратите внимание, что это лучше, чем решение, описанное здесь, потому что оно пересчитывается только при изменении диапазона, определенного вами в ваших параметрах.

ПРИМЕРЫ

С фильтрами:

Автофильтр включен, но столбцы не фильтруются:

Используется с условным форматированием:

ДАЛЬНЕЙШЕЕ ЧТЕНИЕ

Как использовать автофильтры в макросах Excel VBA
Объект автофильтра (справочник по языку Excel 2003 VBA)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .