Macros para El Análisis de Datos - Tablas Dinámicas
Macros para El Análisis de Datos - Tablas Dinámicas
Macros para El Análisis de Datos - Tablas Dinámicas
A u t o matizacin
Excel Buscar en este sitio
Pgina principal
Acceder al editor de
Macros para el anlisis de datos Tablas
Visual Basic para
Aplicaciones (VBA)
dinmicas
Acceso a las
Propiedades de los
objetos
Acceso a los Mtodos de Contenidos
los Objetos
1 Objetos de las tablas dinmicas:
Activar la ficha del
2 Macro para controlar campos de pginas, filas y valores en tablas dinmicas
programador
3 Macro para controlar campos de filas, valores y formato numrico de valores en una
Anlisis de datos -
Grficas dinmicas tabla dinmica
4 Macro para controlar campos de filas, de columnas, de valores, formato numrico y
Cambiar los colores del
fondo de una celda el destino de la tabla dinmica
Ciclo Do While...Loop 5 Macro para controlar datos agrupados en una tabla dinmica
Ciclo Do...Loop Until 6 Macro para eliminar subtotales de una tabla dinmica
Ciclo For Each...Next 7 Macro para controlar los filtros por el campo de las filas/ renglones
8 Macros para ordenar tablas dinmicas
Ciclo For...Next
Definicin de funciones
Eliminar espacios
Filas y columnas vacas
Funciones de sumatorias Objetos de las tablas dinmicas:
y productos
Funciones de texto
Funciones de texto en PivotCaches. Una coleccin de objetos PivotCache en el objeto
VBA Excel Workbook (los datos almacenados por una Tabla Dinmica se
Funciones para el almacenan en una pivot cache.
manejo de colores de PivotTables. Una coleccin de objetos PivotTable en el objeto
una celda
Workbook.
Funciones para el
manejo de textos
PivotFields. Una coleccin de campos/ fields en el objeto
Funciones para la
PivotTable.
limpieza de textos PivotItems. Una coleccin de datos/ items individuales dentro de
Funciones que manejan una categora de una categora de campos/ fields.
rangos como CreatePivotTable. Un mtodo para crear un Tabla Dinmica
argumentos
utilizando los datos almacenados en la memoria cach.
google1bb521775c3ea
Importancia de la Pasos para crear una tabla dinmica:
Automatizacin en Excel
1. Crear el Cach
Macro para buscar en un
texto una lista de
2. Crear una nueva hoja
palabras (funcin InStr) 3. Crear la Tabla Dinmica
Macro para buscar en un 4. Especificar los Campos de entrada de la Tabla
texto una lista de
palabras (operador Like)
Tabla de datos.
Macro para calcular
frecuencia de palabras
Vendedor Regin Frutas Mes Ventas
Macro para calcular Andrs Sur Guayaba Enero 1500
frecuencias utilizando
dicccionarios
Andrs Sur Manzanas Febrero 2000
Macro para calcular ngel Este Peras Marzo 1600
frecuencias utilizando
Andrs Norte Peras Abril 2600
diccionarios
Macro para combinar Jos Oeste Guayaba Mayo 2700
hojas
Juan Norte Durazno junio 3800
Macro para extraer
grupos de texto Juan Norte Papaya Enero 8100
utilizando Expresiones Lourdes Norte Manzanas Febrero 4000
Regulares
Macro para separar Margarita Oeste Peras Marzo 4800
palabras (utilizando
diferentes signos de
https://sites.google.com/site/automatizacionexcel/macrosparaelanalisisdedatostablasdinamicas 1/13
201763 MacrosparaelanlisisdedatosTablasdinmicasAutomatizacinExcel
diferentes signos de Margarita Este Pltanos Abril 1400
puntuacin)
Macros para asignar
Mara Oeste Durazno Mayo 2000
valores a una celda Mara Oeste Manzanas junio 6800
Macros para asignar
valores a una celda
Pedro Sur Papaya Enero 1500
utilizando la propiedad Pedro Norte Pltanos Febrero 3100
Offset
Ren Sur Pltanos Marzo 8100
Macros para buscar
palabras en un texto Sandra Sur Guayaba Abril 7800
Macros para calcular
Sandra Oeste Papaya Mayo 8600
subtotales usando
diccionarios Sandra Este Peras junio 3000
Macros para cambiar las Sanago Este Durazno Enero 6000
propiedades de una
columna Sanago Sur Durazno Febrero 9200
Macros para comparar Sanago Este Papaya Marzo 5900
dos rangos de valores
Macros para contar
celdas en blanco o con
datos
Macros para contar
Macro para controlar campos de pginas, filas y valores
objetos de una coleccin
en tablas dinmicas
Macros para contar y
sumar
Macros para contar y La siguiente macro:
sumar condicionalmente
usando funciones de Crea el rea cach
Excel SetPTCache=ActiveWorkbook.PivotCaches.Create(
Macros para convertir _
textos a maysculas,
SourceType:=xlDatabase,_
minsculas y nombres
propios SourceData:=Range("A1").CurrentRegion)
Macros para crear Crea una nueva hoja de trabajo y fija la celda "A3" como destino
grficas Worksheets.Add
Macros para el anlisis Define el Campo de filtro de pginas: "Regin"
de datos - Auto filtros
Orientation=xlPageField
Macros para el anlisis Define el Campo de filas/ renglones: Vendedores
de datos - Tablas
dinmicas Orientation=xlRowField
Macros para el manejo Define el Campo de valores: Ventas
de los elementos de una Orientation=xlDataField
coleccin
Funcin aplicada al Campo de valores: Suma
Macros para el manejo
Function=xlSum
de los elementos de una
grfica
Asume:
Macros para eliminar
valores duplicados en
dos o ms columnas Una tabla de datos en la hoja activa
Macros para encontrar y
SubCrearTablaDinamica()
eliminar valores
duplicados en una DimPTCacheAsPivotCache
columna DimPTAsPivotTable
Macros para enviar y
recibir datos a travs de 'Crearelcachapartirdelahojaactivadedatos
cajas de dilogo
SetPTCache=ActiveWorkbook.PivotCaches.Create(_
Macros para Hojas de
SourceType:=xlDatabase,_
Trabajo
SourceData:=Range("A1").CurrentRegion)
Macros para leer
archivos de texto
Macros para leer 'Crearunanuevahojadedatos
archivos de texto Worksheets.Add
separados por comas
Macros para limpieza de 'Crearlatabladinmicayfijarcomodestinalacelda
datos
"A3"
Macros para manejar
carpetas, directorios y
SetPT=ActiveSheet.PivotTables.Add(_
archivos PivotCache:=PTCache,_
Macros para manejar TableDestination:=Range("A3"))
Expresiones Regulares
Macros para manejar los 'Especificarloscampos
elementos de una forma
WithPT
(objeto Shape)
'Campodefiltrodepginas
Macros para procesar
tablas de datos With.PivotFields("Regin")
Macros para realizar .Orientation=xlPageField
operaciones bsicas en
las colecciones
https://sites.google.com/site/automatizacionexcel/macrosparaelanalisisdedatostablasdinamicas 2/13
201763 operaciones bsicas en MacrosparaelanlisisdedatosTablasdinmicasAutomatizacinExcel
las colecciones .Position=1
Macros para realizar EndWith
operaciones en celdas
que cumplan ciertos
criterios 'Campodefilas
Macros para seleccionar With.PivotFields("Vendedor")
celdas con la ayuda de .Orientation=xlRowField
las teclas de direccin EndWith
Macros para seleccionar
celdas, columnas y
'Campodedatos,funcinSuma
rangos
With.PivotFields("Ventas")
Macros para separar
palabras .Orientation=xlDataField
Macros para trabajar con .Function=xlSum
celdas especiales EndWith
Macros para trabajar con EndWith
ciclos EndSub
Macros para trabajar con
libros
Macros para trabajar con
rangos
La siguiente tabla muestra el resultado de la macro anterior:
Manejo de textos
Modelo de Objetos de
Grficas/ Chart
Objeto Range
Objetos de
Programacin en Excel
Power Pivot
Respuestas rpidas
Ricardo Villafaa
Figueroa
Separar un texto en
columnas utilizando
frmulas matriciales
Talleres
Usar el objeto Cells para
seleccionar rangos
Usar funciones de Excel
en Visual Basic
Uso de ADO para
consultar una hoja de
Excel
Uso de la instruccin
With
Macro para controlar campos de filas, valores y formato
Uso de operadores
lgicos en las funciones numrico de valores en una tabla dinmica
Uso de variables
Uso de Variables Objeto
La siguiente macro:
(Set)
Ventana "Inmediato" del
Crea una nueva hoja de trabajo
editor de VBA
Define el Campo de filas/ renglones: Vendedores
Mapa del sitio
define el Campo de valores: Ventas
Aplica la funcin Suma al Campo de valores: Suma
Aplica formato de la columna de totales:"#,##0"
Define el encabezado de la columna de totales:"Totales de
vendedor"
Asume:
SubCreatePivotTable1()
DimPTCacheAsPivotCache
DimPTAsPivotTable
'Crearelcach.AsumeunatablallamadaTabla1
SetPTCache=ActiveWorkbook.PivotCaches.Create(_
SourceType:=xlDatabase,_
SourceData:=Range("Tabla1").CurrentRegion)
'Agregarunanuevahoja
Worksheets.Add
https://sites.google.com/site/automatizacionexcel/macrosparaelanalisisdedatostablasdinamicas 3/13
201763 MacrosparaelanlisisdedatosTablasdinmicasAutomatizacinExcel
'Crearlatabladinmica
SetPT=ActiveSheet.PivotTables.Add(_
PivotCache:=PTCache,_
TableDestination:=Range("A3"))
'Especificarloscampos
WithPT
'Campodefilas.Columnavendedor
With.PivotFields("Vendedor")
.Orientation=xlRowField
EndWith
'Campodevalores.FuncinSuma
With.PivotFields("Ventas")
.Orientation=xlDataField
.Function=xlSum
.NumberFormat="#,##0"
.Caption="Totalesdevendedor"
EndWith
EndWith
EndSub
Asume:
SubCreatePivotTable3()
DimPTCacheAsPivotCache
DimPTAsPivotTable
https://sites.google.com/site/automatizacionexcel/macrosparaelanalisisdedatostablasdinamicas 4/13
201763 MacrosparaelanlisisdedatosTablasdinmicasAutomatizacinExcel
'Crearelcach
SetPTCache=ActiveWorkbook.PivotCaches.Create(_
SourceType:=xlDatabase,_
SourceData:=Range("Tabla1").CurrentRegion)
OnErrorResumeNext
Application.DisplayAlerts=False
Sheets("Anlisis").Delete
'Agregarunanuevahoja
Worksheets.Add
ActiveSheet.Name="Anlisis"
'Crearlatabladinmica
SetPT=ActiveSheet.PivotTables.Add(_
PivotCache:=PTCache,_
TableDestination:=Range("A3"))
'Especificarloscampos
WithPT
'Campodefilas
With.PivotFields("Vendedor")
.Orientation=xlRowField
EndWith
'Campocolumnas
With.PivotFields("Regin")
.Orientation=xlColumnField
EndWith
'Campodevalores
With.PivotFields("Ventas")
.Orientation=xlDataField
.Function=xlSum
.NumberFormat="#,##0"
EndWith
EndWith
EndSub
SubCrearTablaDinamica()
DimPTCacheAsPivotCache
DimPTAsPivotTable
'Crearelcachapartirdelahojaactivadedatos
SetPTCache=ActiveWorkbook.PivotCaches.Create(_
SourceType:=xlDatabase,_
SourceData:=Range("A1").CurrentRegion)
'Crearunanuevahojadedatos
Worksheets.Add
'Crearlatabladinmicayfijarcomodestinalacelda
"A3"
SetPT=ActiveSheet.PivotTables.Add(_
PivotCache:=PTCache,_
TableDestination:=Range("A3"))
'Especificarloscampos
WithPT
With.PivotFields("Regin")
.Orientation=xlRowField
EndWith
'Campodefilas
With.PivotFields("Vendedor")
.Orientation=xlRowField
EndWith
'Campodedatos,funcinSuma
With.PivotFields("Ventas")
.Orientation=xlDataField
.Function=xlSum
EndWith
EndWith
EndSub
https://sites.google.com/site/automatizacionexcel/macrosparaelanalisisdedatostablasdinamicas 6/13
201763 MacrosparaelanlisisdedatosTablasdinmicasAutomatizacinExcel
SubBorrarSubtotalesTablaDinamica()
DimptAsPivotTable
DimpfAsPivotField
OnErrorResumeNext
Setpt=
ActiveSheet.PivotTables(ActiveCell.PivotTable.Name)
IfptIsNothingThen
MsgBox"ColocarelcursoenlaTablaDinmica"
ExitSub
EndIf
ForEachpfInpt.PivotFields
pf.Subtotals(1)=True
pf.Subtotals(1)=False
Nextpf
EndSub
https://sites.google.com/site/automatizacionexcel/macrosparaelanalisisdedatostablasdinamicas 7/13
201763 MacrosparaelanlisisdedatosTablasdinmicasAutomatizacinExcel
SubCrearTablaDinamica001()
'Filtrosenelcampodelasfilas
DimPTCacheAsPivotCache
DimPTAsPivotTable
'Crearelcach
'Activarlahojadedatos
Sheets("Datos").Select
SetPTCache=ActiveWorkbook.PivotCaches.Create(_
SourceType:=xlDatabase,_
SourceData:=Range("A1").CurrentRegion)
'Crearunanuevahojadedatos
Worksheets.Add
'Crearlatabladinmicacondestinoenlacelda"A3"
SetPT=ActiveSheet.PivotTables.Add(_
PivotCache:=PTCache,_
TableDestination:=Range("A3"))
'Especificarloscampos
WithPT
'Campodefilas
With.PivotFields("Regin")
.Orientation=xlRowField
'filtrosenelcampodelasregiones
.PivotItems("Norte").Visible=True
.PivotItems("Sur").Visible=True
.PivotItems("Este").Visible=False
.PivotItems("Oeste").Visible=False
EndWith
https://sites.google.com/site/automatizacionexcel/macrosparaelanalisisdedatostablasdinamicas 8/13
201763 MacrosparaelanlisisdedatosTablasdinmicasAutomatizacinExcel
'Campodedatos
With.PivotFields("Ventas")
.Orientation=xlDataField
.Function=xlSum
.NumberFormat="#,##0"
EndWith
EndWith
EndSub
Argumentos de la funcin
Orden, Campo, Lnea pivote (PivotLine) y subtotales
(CustomSubtotal)
Orden: ascendentes o descendente
Campo: Columna por ordenar
Lnea pivote(PivotLine): Es una lnea en una fila, o en
una columna en la tabla
Subtotales (CustomSubtotal): Campo de subtotales en
la tabla
PT.PivotFields("Vendedor").AutoSortxlAscending,"Suma
deVentas"
SubPivotTableSort()
DimPTAsPivotTable
OnErrorResumeNext
SetPT=
ActiveSheet.PivotTables(ActiveCell.PivotTable.Name)
IfPTIsNothingThen
MsgBox"Colocarelcursosdentrodelatabla
dinmica"
ExitSub
EndIf
PT.PivotFields("Vendedor").AutoSortxlAscending,"Suma
deVentas"
EndSub
Tabla resultante de la macro anterior.
https://sites.google.com/site/automatizacionexcel/macrosparaelanalisisdedatostablasdinamicas 9/13
201763 MacrosparaelanlisisdedatosTablasdinmicasAutomatizacinExcel
https://sites.google.com/site/automatizacionexcel/macrosparaelanalisisdedatostablasdinamicas 10/13
201763 MacrosparaelanlisisdedatosTablasdinmicasAutomatizacinExcel
SubPivotTableSort3()
DimPTAsPivotTable
OnErrorResumeNext
SetPT=
ActiveSheet.PivotTables(ActiveCell.PivotTable.Name)
PT.PivotFields("Vendedor").AutoSortOrder:=xlAscending,
Field:="SumadeVentas"
EndSub
https://sites.google.com/site/automatizacionexcel/macrosparaelanalisisdedatostablasdinamicas 11/13
201763 MacrosparaelanlisisdedatosTablasdinmicasAutomatizacinExcel
SubPivotTableSort4()
DimPTAsPivotTable
OnErrorResumeNext
SetPT=
ActiveSheet.PivotTables(ActiveCell.PivotTable.Name)
PT.PivotFields("Vendedor").AutoSortOrder:=xlAscending,
Field:="Vendedor"
EndSub
https://sites.google.com/site/automatizacionexcel/macrosparaelanalisisdedatostablasdinamicas 12/13
201763 MacrosparaelanlisisdedatosTablasdinmicasAutomatizacinExcel
Iniciar sesin | Actividad reciente del sitio | Informar de uso inadecuado | Con la tecnologa de Google Sites
https://sites.google.com/site/automatizacionexcel/macrosparaelanalisisdedatostablasdinamicas 13/13