Excel 2013 VBA Pivot Table выбирает только первые 5 элементов со связями

Я пытаюсь найти способ использовать Excel 2013 VBA, чтобы выбрать только первые 5 элементов в сводной таблице. Я попробовал следующие строки кода, чтобы показать только 5 лучших элементов:

Dim c
dim i as long

Worksheets("sheet1").PivotTables(1).PivotFields ("field1")
ActiveSheet.PivotTables(1).PivotFields("field1").CurrentPage = "(All)"
With ActiveSheet.PivotTables(1).PivotFields("field1")
c = 5
For i = .PivotItems.Count To 1 Step -1
If (c > 0) Then
.PivotItems(i).Visible = True
Else
.PivotItems(i).Visible = False
End If
c = c - 1
Next
End With

Вот код, который мне дает макрос-рекордер, и он не работает:

ActiveSheet.PivotTables("PivotTable5").PivotFilters. _
.PivotFields("field1") Add2 Type:=xlTopCount, _        DataField:=ActiveSheet.PivotTables("PivotTable5"). _
    PivotFields("fied1"), Value1:=5

Приведенный ниже код работает нормально, если нет никаких связей значений ни для одного из значений, которых нет в списке Top 5. С нашим набором данных мы всегда будем связываться в нашем Топ-5.

With Workbooks(cFileName).Worksheets("sheet1")
.PivotTables(1).PivotFields("Field1").PivotFilters.Add2     
xlTopCount, .PivotTables(1).PivotFields("Field1"), 5
End With

РЕДАКТИРОВАТЬ: Список сводной таблицы покажет некоторые элементы как проверенные, но никакие данные не связаны с этими значениями. Диаграммы, основанные на этих сводных таблицах, пустые, и следующий код выбирает только 5 нижних значений в поле, как это было задумано в исходном сообщении.

With workbook.Worksheets("sheet1").PivotTables("PivotTable2").PivotFields
("Count of Description")

For Each WS In ActiveWorkbook.Worksheets
For Each pvt In WS.PivotTables

c = 5

For i = .PivotItems.Count To 1 Step -1
If (c > 0) Then
.PivotItems(i).Visible = True
Else
.PivotItems(i).Visible = False
End If
c = c - 1
Next
Next
Next

End With

1 ответ

Решение

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

  1. Выберите ячейку, в которой вы хотите увидеть данные. В моем случае это был "B10". Это будет отличаться для всех остальных в зависимости от того, где находятся данные вашей сводной таблицы.
  2. Нажмите клавиши SHIFT + END + СТРЕЛКА ВНИЗ, чтобы перейти к нижней части используемого диапазона.
  3. Выберите все строки, чтобы скрыть.
  4. Щелкните правой кнопкой мыши значения, чтобы скрыть.
  5. Выберите "Фильтр" из списка.
  6. Нажмите "Скрыть выбранные элементы".

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

Application.Goto reference:=Workbooks("File").Sheets("Sheet1").Range("B10")
If IsEmpty(Range("B11").value) = False Then
Range("B10").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete
Else
End If
Другие вопросы по тегам