valores valor una texto tablas tabla sirve segun que para mostrar lista filtros filtro filtrar dinamico dinamicas dinamica celda campos excel excel-vba powerpivot

excel - valor - Tabla de Pivote de Poder-Looping a través de los campos en los filtros de informe



tabla dinamica valores texto (3)

Después de algunas pruebas, parece que puede obtener la lista de campos de filtro de página al enumerar los Campos de gráfico y verificar si el valor de su propiedad de Orientación es igual a XlPageField. Pruebe el siguiente código:

Sub Test() Dim pt as PivotTable Dim pf as PivotFields set pt=Sheets("test").PivotTables(1) For each pf in pt.PivotFields If pf.Orientation=xlPageField Then Debug.Print pf.Name End If Next pf End Sub

Espero que esto ayude

Descargo de responsabilidad : esta pregunta fue publicada en el foro msdn, pero como no recibí ninguna respuesta (sorprendentemente), también estoy publicando aquí. Es posible que desee comprobar ese enlace antes de intentar intentar esta pregunta. No quisiera que pierdas tu tiempo si se publica una solución en ese enlace :)

Problema : quiero averiguar los nombres de los campos en el filtro de informes. Así que estoy buscando RegionCountryName , Cityname y ProductKey . Los filtros de informe son dinámicos y pueden cambiar.

Captura de pantalla :

Qué he intentado : he comprobado cada propiedad de Power Pivot, pero no hay ninguna propiedad que pueda encontrar que me permita recorrer los campos del pivote de potencia.

Incluso he intentado este código, pero aparentemente me da un error en Set pf = pt.PageFields(1)

Sub Sample() Dim pt As PivotTable, pi As PivotItem, pf As PivotField Dim lLoop As Long Set pt = Sheet1.PivotTables(1) Set pf = pt.PageFields(1) For Each pi In pf.PivotItems Debug.Print pi.Name Next pi End Sub

Error ScreenShot

Entonces, ¿qué me estoy perdiendo? ¿O hay un enfoque diferente que debería tomar?

EDITAR

Si alguien quiere experimentar con él, el archivo se puede descargar desde AQUÍ Estoy mirando la Hoja de Inventory .


Han pasado más de 2 años desde que se planteó la pregunta original, pero aún no pude encontrar una respuesta satisfactoria ...

PERO encontré una forma de evitarlo :-) También puedes cambiar la tabla de PowerPivot mediante cortadoras.

Usé este código para cambiar el mes seleccionado en mi archivo:

Private Sub SpinButton21_SpinDown() Dim SC As SlicerCache Dim SL As SlicerCacheLevel Dim SI As SlicerItem Set SC = ActiveWorkbook.SlicerCaches("Slicer_Month4") Set SL = SC.SlicerCacheLevels(1) ''get the current item number c = 1 For Each SI In SL.SlicerItems If SI.Selected = True Then MONTHindex = c Exit For End If c = c + 1 Next SI If MONTHindex = 1 Then MONTHindex = SC.SlicerCacheLevels.Item.Count + 1 End If SC.VisibleSlicerItemsList = SL.SlicerItems(MONTHindex - 1).Name End Sub

No soy un profesional, pero espero que ayude.


Si cambia pt.pivotfields a pt.pagefields en la publicación de realce_net, debería ejecutarse. Como dice la referencia de Microsoft, pagefields se introdujo con Office 2013.

Dim pt As PivotTable Dim pf As PivotFields Set pt = Sheets("test").PivotTables(1) For Each pf In pt.PageFields If pf.Orientation = xlPageField Then Debug.Print pf.Name End If Next pf