2016-08-10 9 views
0

Я ищу наиболее эффективный способ (наименьший код) для фильтрации поля строки для выделенной строки для записей «(пустой)». Я знаю, как установить PageField/Report Filter (надеюсь, я говорю правильно здесь), используя метод .CurrentPage:Самый эффективный способ фильтрации поля строки для строки «(пустой)».

ActiveSheet.PivotTables("PivotTable1").PivotFields("Some Field").CurrentPage = "Something" 

Для меня, это эффективно, но это работает только для PageFields не RowFields. Я также знаю, опции петли, чтобы установить свойства PivotItems.Visible как «True» или «False»:

With ActiveSheet.PivotTables("PivotTable1").PivotFields("Some Field") 
    For each PvtItm in .PivotItems 
     If pvtItm.Value = "(blank)" Then 
      PvtItm.Visible = True 
     Else 
      PvtItm.Visible = False 
     End If 
End With 

Это работает для RowFields, но несколько дополнительных линий. Я могу использовать это, но мне было любопытно, был ли более короткий метод. Кроме того, я хочу видеть только записи «(пустые)», поэтому, если мне нужно установить их по-другому, то с помощью = «(пусто)». Мне было бы интересно узнать, что использовать. Мы ценим любые предложения!

ответ

0

Если вы записываете макрос фильтрации Ярлык строки с ярлыком Filters> РАВНО ... вы получите что-то вроде

ActiveSheet.PivotTables("PivotTable1").PivotFields("Some Field") _ 
    .PivotFilters.Add Type:=xlCaptionEquals, Value1:="(blank)" ' or maybe Value1:="" ? 
+0

Спасибо, Slai - что сделал работу. Единственное, что я заметил, это то, что slicer, подключенный к этой строке и полем, не отражает фильтр, но сам движок хорошо выглядит. – spyder3909

+0

Я пробовал его в Excel 2007, поэтому вы можете попробовать записать макрос в своей версии, чтобы узнать, отличается ли сгенерированный код. – Slai

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