martes, septiembre 22, 2015

Ocultar filtros en tablas dinámicas

Cuando creamos una tabla dinámica Excel instala filtros en los distintos campos (filas, columnas y filtro del informe)


Si por algún motivo queremos ocultar las flechas de los filtros, por ejemplo para evitar que un usuario cambie el contenido del informe, podemos usar la opción "Encabezados de campos" en el grupo Mostrar en las Opciones de las tablas dinámicas

Pero esta opción tiene un problema: no sólo quita las flechas sino también los encabezados

y como bono adicional, no quita el encabezado ni la flecha del filtro del informe. Los encabezados Ciudad, Agente y Año han desaparecido del informe dejando a nuestro desprevenido y poco informado usuario cavilando sobre si Janet Leverling es un agente de ventas o tal vez un cliente.

Para quitar las flechas de los filtros sin quitar los encabezados podemos usar esta macro

Sub ocultar_Filtros()
Dim ptbl As PivotTable
Dim pfld As PivotField
    Set ptbl = ActiveSheet.PivotTables(1)
      For Each pfld In ptbl.PivotFields
          pfld.EnableItemSelection = False
      Next pfld
End Sub


Esta animación muestra el resultado


Para volver a mostrar los filtros usamos esta macro, igual a la anterior pero con la propiedad EnableItemSelection con el valor True

Sub mostrar_Filtros()
Dim ptbl As PivotTable
Dim pfld As PivotField
    Set ptbl = ActiveSheet.PivotTables(1)
      For Each pfld In ptbl.PivotFields
          pfld.EnableItemSelection = True
      Next pfld
End Sub


De la misma manera podemos ocultar el filtro de un determinado campo. Para evitar que el usuario pueda filtrar el informe por Agente usamos esta macro

Sub ocultar_Item()
Dim ptbl As PivotTable
Dim pfld As PivotField

    Set ptbl = ActiveSheet.PivotTables(1)
    ptbl.PivotFields("Agente").EnableItemSelection = False
  
End Sub


Para volver a mostrar el filtro del campo cambiamos el valor de la propiedad EnableItemSelection a True.


6 comentarios:

  1. Creo que hay una errata en la primera macro, en la fila 5

    Lo correcto sería: For Each pfld In ptbl.PivotFields

    ResponderBorrar
  2. Efectivamente. Corregido!

    Gracias por colaborar.

    ResponderBorrar
  3. Te roban tus publicaciones y ni la molestia de mencionarte:

    https://es.scribd.com/document/304630529/Ocultar-Filtros-en-Tablas-Dinamicas

    Gracias por todos tus aportes, aqui he aprendido mucho.

    ResponderBorrar
  4. buenas tardes, y cuando son mas de una tabla dinamica en la misma hoja, como puedo hacer para q identifique las q se necesitan.

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.