Escolar Documentos
Profissional Documentos
Cultura Documentos
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
=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.
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
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.
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
"Formato
numerico"
ExitSub
EndIf
SetoPTable
ActiveSheet.PivotTables(1)
Application.Dialogs(xlDialogFormatNumber).Show
strFormatSelected
ActiveCell.NumberFormat
ForEachoPFieldInoPTable.DataFields
oPField.NumberFormat
strFormatSelected
NextoPField
EndSub
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
"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.
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: