2016-02-18 3 views
0

Я пытаюсь построить набор данных для визуального анализа.Автоматический обновляющий фильтр Excel для динамических диапазонов графиков

Данные содержат около 50 строк поиска, но необязательно заполняют все строки. т. е. выбор фактора А дает мне 20 строк данных и 30 строк нулей.

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

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

Код:

Private Sub Worksheet_Change(ByVal Target As Range) 

    ActiveSheet.AutoFilter.ApplyFilter 

End Sub 

в предыдущих потоков, кажется, не обновить фильтр для меня.

TLDR версия; Как заставить Excel всегда фильтровать определенные критерии (т. Е. Удалить/скрыть нули) при изменении значений столбца?

+0

Вы говорите об изменении стоимости из-за формулы или изменения фактического значения, потому что вы вставили новые значения в столбец? Первый не вызывает макрос события Worksheet_Change. Последнее делает. – Jeeped

+0

Это было бы изменение ценности из раскрывающегося списка, созданного с использованием «Проверка данных» – Wolfspirit

+0

. Возможно, что-то будет более целесообразным? – Wolfspirit

ответ

0

Эта модификация работает для меня.

Private Sub Worksheet_Change(ByVal Target As Range) 
    With Target.Parent 
     If .AutoFilterMode Then 
      On Error GoTo bm_Safe_Exit 
      'this next line isn't absolutely necessary 
      'but it doesn't hurt anything and could be necessary later 
      Application.EnableEvents = False 
      .AutoFilter.ApplyFilter 
     End If 
    End With 
bm_Safe_Exit: 
    Application.EnableEvents = True  
End Sub 

Убедитесь, что вы не разбились обработкой событий и оставили его в ложном состоянии, запустив Application.EnableEvents = True в VBE-х Immediate window.

Смежные вопросы