Сводная таблица Excel - Как сохранить фильтр и сортировку при обновлении данных

У меня есть сводная таблица (Excel 2010). Каждый раз, когда я обновляю данные и делаю обновление, сортировка и фильтры сводной таблицы теряются, мне нужно явно изменить фильтр (выбрать все и удалить те, которые не нужны).

любое решение для этого?

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

спасибо заранее
привет
Марк

16
задан megloff
22.03.2023 2:39 Количество просмотров материала 3074
Распечатать страницу

1 ответ

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

Что касается порядка я нашел в форуме совет, что вы должны assing другой столбец "порядок сортировки" в таблице данных происхождения и использовать его в качестве скрытого столбца в сводной таблице, так что вы можете определить порядок сортировки с помощью это поле. Этот также не теряется при последующем изменении данных.

Sub Macro1()
On Error GoTo Fehler
Application.ScreenUpdating = False
With ActiveWorkbook.Sheets("Rating").PivotTables(1)
.PivotFields("OWASP 2010").ClearAllFilters
With .PivotFields("OWASP 2010")

    If .PivotItems("(blank)").Visible = True Then
        .PivotItems("(blank)").Visible = False
    End If
    ' uncomment this sectin in case you liek to change the sorting via vba
    ' 1. sort first the stuff automatically A-Z
    '.AutoSort xlAscending, "OWASP 2010"
    ' 2. move empty values to the end
    'If .PivotItems(" ").Position <> .PivotItems.Count - 1 Then
    '    .PivotItems(" ").Position = .PivotItems.Count - 1
    'End If
 End With
.PivotFields("Categories").ClearAllFilters
With .PivotFields("Fortify Categories")
     If .PivotItems("0").Visible = True Then
        .PivotItems("0").Visible = False
     End If
     If .PivotItems("(blank)").Visible = True Then
        .PivotItems("(blank)").Visible = False
    End If
End With
End With
Application.ScreenUpdating = True
Exit Sub
Fehler:
Application.ScreenUpdating = True
End Sub

С уважением Марк

0
отвечен megloff 2023-03-23 10:27

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх