2016-06-23 1 views
0
Private Sub Worksheet_Change(ByVal Target As Range) 

If Intersect(Target, Range("J2")) Is Nothing Then Exit Sub 

'Set the Variables to be used 
Dim pt As PivotTable 
Dim Field As PivotField 
Dim NewPolicy As Double 

'Here you amend to suit your data 
Set pt = Worksheets("Payment Data").PivotTables("PivotTable1") 
Set Field = pt.PivotFields("POL_NUMBER") 
NewPolicy = Worksheets("Payment Data").Range("J2").Value 

'This updates and refreshes the PIVOT table 
With pt 
Field.ClearAllFilters 
Field.CurrentPage = NewPolicy 
pt.RefreshTable 
End With 

End Sub 

Извиняется за любой неправильный синтаксис, так как я начинаю с этого. В приведенном выше коде я пытаюсь получить таблицу Pivot, чтобы получить значение из ячейки на той же странице, а затем мгновенно обновить ее, без необходимости взаимодействовать со ссылочной ячейкой. Я получил этот код с веб-сайта, и я его адаптировал, но мне не удается обновить сводную таблицу. Перед изменением этого кода в вышеуказанном состоянии, мой код выглядит следующим образом:Создание сводной таблицы, которая получает данные из ячейки и соответственно фильтрует

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

If Intersect(Target, Range("J2")) Is Nothing Then Exit Sub 

'Set the Variables to be used 
Dim pt As PivotTable 
Dim Field As PivotField 
Dim NewPolicy As Double 

'Here you amend to suit your data 
Set pt = Worksheets("Payment Data").PivotTables("PivotTable1") 
Set Field = pt.PivotFields("POL_NUMBER") 
NewPolicy = Worksheets("Payment Data").Range("J2").Value 

'This updates and refreshes the PIVOT table 
With pt 
Field.ClearAllFilters 
Field.CurrentPage = NewPolicy 
pt.RefreshTable 
End With 

End Sub 

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

Спасибо заранее, LHS

+0

Так что же происходит с этим кодом? – Rory

+0

Код на самом верху - это код, который я использую. Что делает код, так это то, что он получает значение из ячейки на листе (сама ячейка получает свое значение из другой ячейки на другом листе. Я хочу, чтобы код обнаруживал изменение значения ячейки, а затем отфильтровывал Но теперь ничего не происходит. Код просто мертв – LHS

+0

Как вы меняете J2? – Rory

ответ

0

Вы на самом деле не нужен код, чтобы сделать это, если у вас есть Excel 2010 или более поздней версии, потому что:

  • сводную таблицу с ничего, кроме одного поля Фильтры выглядят, а ведет себя очень точно так же, как выпадающее меню Data Validation; и

  • , что сводная таблица может быть подключена к другим сводным таблицам через slicers, так что она управляет ими.

Вот как это выглядит, когда реализовано. В раскрывающемся списке «Регион» вверху находится сводная таблица, в которой поле «Область» отображается только как поле «Страница». Два других Pivots подключены к нему через slicer.

Faux DV and Pivot

И теперь, если вы меняете, что выбор региона, остальные шарниры обновлены автоматически:

Pivots are synced

Конечно, вы могли бы просто использовать слайсер непосредственно:

Just use a slicer

См. http://dailydoseofexcel.com/archives/2014/08/16/sync-pivots-from-dropdown/

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