Você está na página 1de 11

Ocultar filtros en tablas dinmicas

MARTES, SEPTIEMBRE 22, 2015

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

Si por algn motivo queremos ocultar las flechas de los filtros, por ejemplo para evitar que
un usuario cambie el contenido del informe, podemos usar la opcin "Encabezados de
campos" en el grupo Mostrar en las Opciones de las tablas dinmicas

Pero esta opcin tiene un problema: no slo quita las flechas sino tambin los encabezados

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

tal

vez

un

cliente.

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

Subocultar_Filtros()
DimptblAsPivotTable
DimpfldAsPivotField
Setptbl

ActiveSheet.PivotTables(1)

ForEachpfldInptbl.PivotFields
pfld.EnableItemSelection
Nextpfld
EndSub

Esta animacin muestra el resultado

=False

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

con

el

valor

True

Submostrar_Filtros()
DimptblAsPivotTable
DimpfldAsPivotField
Setptbl

ActiveSheet.PivotTables(1)

ForEachpfldInptbl.PivotFields
pfld.EnableItemSelection

=True

Nextpfld
EndSub

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

Subocultar_Item()
DimptblAsPivotTable
DimpfldAsPivotField

Setptbl

ActiveSheet.PivotTables(1)

ptbl.PivotFields("Agente").EnableItemSelection

=False

EndSub

Para

volver

mostrar

el

filtro

del

campo

propiedad EnableItemSelection

cambiamos

el

valor

de

la

True.

Posted by Jorge Dunkelman at 1:38 p.m. , Links to this post


Enviar esto por correo electrnicoBlogThis!Compartir en TwitterCompartir en FacebookCompartir en Pinterest
, 2 comments
Labels: Macros, Tablas Dinamicas

Formato numrico de campos de datos en tablas dinmicas


LUNES, AGOSTO 24, 2015

Podemos considerar dos formas de organizar datos en una hoja de Excel: en forma plana
("flat file") y en forma tabular ("tabular dataset"). Supongamos una de tabla de ventas que
muestra las cantidades vendidas de distintos productos por ao. Si organizamos la tabla en
forma plana tendremos algo as

En cambio si organizamos los datos en forma tabular, tendremos esta tabla

Esta ltima forma donde todos los valores (datos numricos) estn en una nica columna
(un solo nico campo numrico) es la ms eficiente para trabajar con tablas dinmicas.

Pero si tenemos que crear una tabla dinmica a partir de una matriz de datos plana

descubriremos que cada campo de valor (las columnas 2010, 2011, etc, en el primer
ejemplo) debe ser arrastrado individualmente al rea de los datos. Y lo mismo cuenta para
el formato de los nmeros. Excel da por defecto formato "General" a los datos numricos.

Al crear esta tabla dinmica

si queremos cambiar el formato de los valores tendremos que hacerlo campo por campo,
cinco veces en nuestro caso. En nuestro auxilio vendrn las macros, como cada vez que
tenemos

que

queremos

automatizar

una

tarea

repetitiva.

Si tenemos una nica tabla dinmica en la hoja activa podemos usar esta macro

Subformat_NUM_1()
DimstrFormatSelectedAsString
DimoPTableAsPivotTable
DimoPFieldAsPivotField
DimiPTCountAsInteger

iPTCount

IfiPTCount

ActiveSheet.PivotTables.Count
=

0Then

MsgBox "No se encontraron tablas dinamicas en la hoja", _


vbInformation,

"Formato

numerico"

ExitSub
EndIf

SetoPTable

ActiveSheet.PivotTables(1)

Application.Dialogs(xlDialogFormatNumber).Show

strFormatSelected

ActiveCell.NumberFormat

ForEachoPFieldInoPTable.DataFields
oPField.NumberFormat

strFormatSelected

NextoPField

EndSub

Usamos el mtodo Application.Dialogs(xlDialogFormatNumber).Show para abrir el dilogo


de formato de nmeros, capturamos la eleccin de usuario y con el loop For Each...Next lo
aplicamos

Este

todos

video

los

campos

muestra

de

datos

el

de

la

tabla.

funcionamiento

Si hay ms de una tabla dinmica en la hoja activa tendremos que complicar un poco
nuestro

Subformat_NUM_all()
DimstrFormatSelectedAsString

cdigo

DimoPTableAsPivotTable
DimoPFieldAsPivotField
DimiPTCountAsInteger
DimiXAsInteger

iPTCount

IfiPTCount

ActiveSheet.PivotTables.Count

0Then

MsgBox "No se encontraron tablas dinamicas en la hoja", _


vbInformation,

"Formato

numerico"

ExitSub
EndIf

WithApplication
.ScreenUpdating

=False

.Dialogs(xlDialogFormatNumber).Show
strFormatSelected

For

iX

ActiveCell.NumberFormat

1ToiPTCount

ForEachoPFieldInActiveSheet.PivotTables(iX).DataFields
oPField.NumberFormat

strFormatSelected

NextoPField
NextiX
.ScreenUpdating

=True

EndWith

Podemos llevar nuestra macro un paso ms adelante y dar al usuario la posibilidad de elegir
que

tabla

dinmica

formar

de

las

que

se

encuentran

en

la

hoja

activa.

En este caso tendremos que agregar un Userform con una combobox, que contendr los
nombres de las tablas dinmicas presentes en la hoja activa (un evento crea la lista
dinmicamente de acuerdo a la hoja), y una rutina que recibe como variable el nombre de
la tabla elegida, abre el dilogo de formato numrico y aplica el formato elegido a la tabla.

Podemos reunir todas las macros en un complemento (Add in) e instalarlo de manera que
podamos

usarlo

en

todo

cuaderno

activo

de

Excel.

Otra ventaja del complemento es que agregar una pestaa en la cinta de comandos para
activar las macros con facilidad.

El complemento se puede descargar sin cargo aqu


Despus de descargar y guardar el complemento lo instalamos usando el men
Programador-Complementos (en caso de ser necesario usamos el botn Examinar para
encontrar la ubicacin del complemento)

En caso de recibir una advertencia de seguridad aceptamos la opcin "Habilitar contenido".


Este

video

muestra

la

instalacin

el

funcionamiento

de

la

macro

Los cdigos pueden verse con el editor de Vba (el complemento no est protegido con
contrasea).

Algunas observaciones:

como norma de buena prctica es recomendable reemplazar el nombre por defecto de la


tablas dinmica (Tabla dinmica1, Tabla dinmica2, etc.) por algo ms significativo

podemos convertir matrices planas a matrices tabulares usando el Power Query o la


opcin de consolidacin de rangos mltiples en el viejo asistente de tablas dinmicas.

Você também pode gostar