Las tablas dinámicas en Excel son fundamentales para hacer que los datos sean más fáciles de entender y comprender. Una tabla dinámica puede condensar y triturar datos en estructuras significativas. Los usuarios de MS Excel los han adoptado ampliamente dentro de la industria de datos.
¿Sabía que puede automatizar sus tablas dinámicas en Excel y crearlas con un solo clic? MS Excel se integra bien con VBA y se ha convertido en una excelente herramienta para automatizar tareas repetitivas.
Así es como puede automatizar una tabla dinámica con una macro en MS Excel VBA.
Usar un conjunto de datos de práctica
Puedes descargar y usar un dummy conjunto de datos de Tableau para seguir el script VBA dentro de esta guía. El código VBA funcionará con cualquier otro conjunto de datos, con algunos ajustes básicos. Antes de comenzar, asegúrese de tener macros habilitadas dentro de su libro de Excel.
Hay algunas columnas esenciales que puede usar dentro de la tabla dinámica. Para comprender los matices y la estructura final de la tabla, puede
crear una tabla dinámica básica manualmente con los siguientes elementos:- Filtrar: Región
- Filas: Subcategoría
- Columnas: Estado
- Valores: Ventas
El pivote final debe tener el siguiente aspecto:
Sin embargo, puede dejar que VBA lo haga automáticamente en lugar de prepararlo manualmente.
Cómo crear automáticamente tablas dinámicas en Excel
Para automatizar sus tablas dinámicas con VBA, abra un nuevo archivo de Excel y cambie el nombre de las hojas de la siguiente manera:
- Primera hoja: Macro
- Segunda hoja: Datos
El Macro hoja contiene el macro script, mientras que la Datos hoja contiene sus datos. En la hoja de macro, puede insertar cualquier forma de su elección y asignarle la macro. Haga clic con el botón derecho en la forma y haga clic en Asignar macro.
En el siguiente cuadro de diálogo, haga clic en el nombre de su macro y haga clic en Aceptar. Este paso asigna la macro a la forma.
1. Abra el editor de codificación de Excel VBA
Prensa Alt+F11 para abrir el editor de código. Una vez que esté en el editor de código, haga clic derecho en el nombre del archivo, seguido de Insertar y Módulo. Es importante recordar que escribirá todo el código VBA dentro de un módulo antes de ejecutarlo.
Es una buena práctica usar un nombre de módulo que resuene con el propósito del código. Como se trata de una demostración, puede definir el nombre del módulo de la siguiente manera:
sub pivote_demo()
El nombre del módulo termina con Finalizar sub, que es el comando final de un módulo:
Fin Sub
2. Declarar Variables
Dentro del módulo, comience declarando variables para almacenar algunos valores definidos por el usuario que usará en el script. Puedes usar el Oscuro declaración para declarar variables, de la siguiente manera:
Hoja P tenue Como Hoja de trabajo, HojaD Como Hoja de cálculo
Dim PvtCache Como PivotCache
Dim PvtTable Como Tabla dinámica
Rango Pvt Dim Como Rango
Atenuar Última_fila Como Largo, Last_Col Como Largo
Dim sht1 como Variante
Usará estas variables para lo siguiente:
- Hoja de datos: La hoja de destino, donde VBA creará un pivote.
- Hoja D: La hoja de datos.
- PvtCache: Un caché de pivote contiene el pivote.
- PvtTable: El objeto de la tabla dinámica.
- PvtRango: Un rango de datos para el pivote.
- Última_fila y Última_columna: Última fila y columna completadas dentro de la hoja de datos (DSheet).
- Sht1: Esta variable es una variante.
3. Suprimir advertencias y mensajes
Los errores, advertencias y mensajes innecesarios ralentizan sus códigos VBA. Al suprimir dichos mensajes, puede acelerar considerablemente el proceso.
Usa el siguiente código:
En Error reanudar siguiente
Con Solicitud
.DisplayAlerts = FALSO
.Actualización de pantalla = FALSO
FinCon
Dónde:
- En caso de error Reanudar siguiente: Esta cláusula suprime cualquier error en tiempo de ejecución.
- Solicitud: La aplicación se refiere a MS Excel.
- Mostrar alertas: La propiedad DisplayAlerts define si mostrar alertas.
- Actualización de pantalla: Esta propiedad define si actualizar los cambios en tiempo real o solo una vez que el código haya terminado de ejecutarse.
Cuando se ejecuta este código, suprime cualquier alerta, advertencia y mensaje que Excel mostraría de otra manera. Puede desactivar los parámetros DisplayAlerts y ScreenUpdating estableciendo sus valores en FALSO.
Hacia el final del código, puede volver a activarlos estableciendo el valor como Verdadero.
4. Eliminar cualquier hoja dinámica existente
Para crear una nueva tabla dinámica, tiene dos opciones. En primer lugar, elimine la hoja dinámica existente y use VBA para crear una nueva hoja para almacenar la dinámica. Alternativamente, puede usar una hoja de trabajo existente para mantener el pivote.
En esta guía, vamos a crear una nueva hoja dinámica para almacenar la tabla dinámica.
El para cada el ciclo recorre cada hoja dentro del libro de trabajo y almacena el nombre de la hoja dentro del sht1 variable. Puede usar cualquier nombre de variable (sht1) para contener el nombre de la hoja. El ciclo recorre cada hoja dentro del libro de trabajo actual, buscando una con el nombre específico (Pivote).
Cuando el nombre de la hoja coincide, elimina la hoja y pasa a la hoja siguiente. Una vez que el código verifica todas las hojas, sale del ciclo y pasa a la siguiente parte del código, que agrega una nueva hoja, Pivote.
Así es como puedes hacerlo:
ParaCadasht1EnActiveWorkbook.Hojas de trabajo
Si sht1.Nombre = "Pivote" Entonces
sht1.Borrar
FinSi
Siguiente sht1
Hojas de trabajo. Agregar. Nombre = "Pivote"
5. Definir origen de datos y hojas dinámicas
Es fundamental crear variables para almacenar las referencias de las hojas Pivot y Data. Estos funcionan como accesos directos, a los que puede hacer referencia en el resto del código.
Establecer PSheet = Hojas de trabajo ("Pivote")
Establecer DSheet = Hojas de trabajo ("Datos")
6. Identificar la última fila y columna utilizadas
Esta parte del código funciona dinámicamente, ya que mide la última fila y columna poblada dentro de los datos.
Última_fila = DSheet. Celdas (filas. Recuento, 1). Fin (xlUp). Fila
Last_Col = DSheet. Celdas (1, Columnas. Recuento).Fin (xlA la izquierda).Columna
Colocar PvtRange = DSheet. Células(1, 1).Redimensionar (Última_fila, Última_columna)
Dónde:
- Última fila: Variable para almacenar el último número de fila poblado, es decir, 9995
- Última_col: Variable para almacenar el último número de columna rellenado, es decir, 21
- PvtRango: PvtRange hace referencia a todo el rango de datos para el pivote
7. Crear una caché dinámica y una tabla dinámica
Un caché dinámico contiene la tabla dinámica; por lo tanto, debe crear un caché antes de crear una tabla dinámica. Debe utilizar las referencias de sintaxis de VBA para crear la memoria caché dinámica dentro de la hoja dinámica.
Al hacer referencia a la memoria caché dinámica, debe crear una tabla dinámica. Como parte de la tabla dinámica, puede definir la hoja, la referencia de celda y el nombre de la tabla dinámica.
Establezca PvtCache = ActiveWorkbook. PivotCaches. Create (SourceType:=xlDatabase, SourceData:=PvtRange).CreatePivotTable (TableDestination:=PSheet. Celdas (2, 2), TableName:="MUODemoTable")
Establezca PvtTable = PvtCache. CreatePivotTable (TableDestination:=PSheet. Celdas (1, 1), TableName:="MUODemoTable")
Dónde:
- Libro de trabajo activo: El libro de trabajo actual donde tiene la hoja de Datos y Pivote.
- PivotCaches. Crear: Sintaxis predeterminada para crear una memoria caché dinámica.
- Tipo de fuente: Como tiene los datos dentro del libro de trabajo, puede definirlos como xlBase de datos. Algunas otras opciones incluyen xlConsolidación, xlExterno, o xlTabla dinámica.
- Datos fuente: Puede hacer referencia al rango dinámico anterior como los datos de origen.
- Crear tabla dinámica: Comando predeterminado para crear la tabla dinámica.
- Destino de la tabla: Debe especificar las referencias de hoja y celda donde desea crear el pivote.
- Nombre de la tabla: Especifique un nombre de tabla dinámica.
- Crear tabla dinámica: Comando predeterminado para crear la tabla dinámica dentro de la memoria caché dinámica.
8. Insertar filas, columnas, filtros y valores
Dado que la tabla dinámica está lista, debe comenzar a agregar los parámetros dentro de los filtros, filas, columnas y valores de agregación. Puedes usar el VBA campos de pivote comando para comenzar a declarar los detalles.
Para agregar valores de filtro:
Con hoja activa. Tablas dinamicas("MUODemoTable").PivotFields("Región")
.Orientación = xlPageField
FinCon
Para agregar valores de fila:
Con hoja activa. Tablas dinamicas("MUODemoTable").PivotFields("Subcategoría")
.Orientación = xlRowField
FinCon
Para agregar valores de columna:
Con hoja activa. Tablas dinamicas("MUODemoTable").PivotFields("Estado")
.Orientación = xlColumnField
FinCon
Para agregar valores de agregación:
Con hoja activa. Tablas dinamicas("MUODemoTable").PivotFields("Ventas")
.Orientación = xlDataField
.Función = xlSuma
FinCon
Es esencial tener en cuenta que debe hacer referencia a la hoja activa (hoja dinámica), seguida del nombre de la tabla dinámica y el nombre de la variable. Cuando necesite agregar los filtros, las filas y las columnas, puede alternar entre varias sintaxis, que incluyen lo siguiente:
- xlPageField: Para agregar filtros.
- xlRowField: Para agregar filas.
- xlRowField: Para agregar columnas.
Por último, puede utilizar el xlDataField comando para calcular las agregaciones de valor. Puede usar otras funciones agregadas como xlSum, xlAverage, xlCount, xlMax, xlMin y xlProduct.
9. Ejecutar el código VBA de Excel para crear pivotes automáticos
Finalmente, cuando todo el programa esté listo, puede ejecutarlo presionando F5 o haciendo clic en el jugar botón. Cuando regrese a la hoja dinámica en su libro de trabajo, verá que una nueva tabla dinámica está lista para que la revise.
Si desea ver una ejecución paso a paso de cómo se ejecuta el comando de código línea por línea, puede navegar hasta el editor de código y presionar F8 varias veces. De esta manera, puede ver cómo funciona cada línea de código y cómo VBA crea sus pivotes automáticamente.
Aprender a codificar tablas dinámicas automáticamente
Los pivotes no están restringidos solo a MS Excel. Los lenguajes de programación como Python le permiten crear pivotes optimizados con solo unas pocas líneas de código.
La optimización de datos no puede ser más fácil que esto. Puede seleccionar y elegir de manera efectiva sus comandos en Python y lograr una estructura de pivote similar a la de Excel con facilidad.