Фильтр сводной таблицы Excel VBA - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь создать код VBA для Microsoft Excel, чтобы отфильтровать несколько элементов из множества (например, 3 элемента из 100) из сводной таблицы.Пока что я использовал метод, объявляя элементы, которые я не хочу, чтобы они были ложными, такие как:

.PivotItems("Item A").Visible = True
.PivotItems("Item B").Visible = True
.PivotItems("Item C").Visible = False
.PivotItems("Item D").Visible = False
.PivotItems("Item E").Visible = False

Однако это становится утомительным в будущем, так как, возможно, будет добавлено больше элементов в таблицу и чтоозначает, что мне нужно будет редактировать коды каждый раз, когда добавляется новый элемент.

Есть ли способ отфильтровать два или более элементов без использования

.Visible=false 

, например

pf.CurrentPage = "Item A" + "Item B" 

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Вы можете использовать массив элементов:

Dim arr() As Variant

' Array of items to be kept visible (or hidden depending on your code)
arr = Array("Item 1", "Item 2", "Item 2")

For Each itm In pt.PivotFields("Value").PivotItems
    If Not IsError(Application.Match(itm.Caption, arr, 0)) Then
        itm.Visible = True
    Else
        itm.Visible = False
    End If
Next
0 голосов
/ 15 ноября 2018

Вам нужно будет адаптировать имена сводных таблиц и полей, но в моем тесте это работает:

Sub filter_pivot()
    Dim i As Integer
    ActiveSheet.PivotTables("PivotTable1").ClearAllFilters
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("CLCL")
        For i = 1 To .PivotItems.Count
            Debug.Print .PivotItems(i)
            Select Case .PivotItems(i).Name
                Case Is = "Item C"
                    .PivotItems(i).Visible = False
                Case Is = "Item D"
                    .PivotItems(i).Visible = False
                Case Is = "Item E"
                    .PivotItems(i).Visible = False
            End Select
        Next i
    End With
End Sub

Мы все еще используем .Visible, но не имеет значения, сколько новых элементов вы добавляете.

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