Biblioteca Online : ¡La Suscripción ENI por 9,90 € el primer mes!, con el código PRIMER9. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Análisis eficaz de datos
  3. Tablas dinámicas y VBA
Extrait - Análisis eficaz de datos Con tablas dinámicas de Excel (versiones 2019 y Office 365)
Extractos del libro
Análisis eficaz de datos Con tablas dinámicas de Excel (versiones 2019 y Office 365) Volver a la página de compra del libro

Tablas dinámicas y VBA

Introducción

El objetivo de este capítulo no es el de convertirle en desarrollador VBA para Excel, pero si necesita automatizar tareas para personas que no dominan Excel, las macros y procedimientos VBA pueden serle de gran utilidad.

Dispone de dos métodos para crear macros:

  • Guardar primero la macro para editarla después.

  • Escribir directamente la macro en Visual Basic.

El primer método deja a Excel la tarea de escribir el texto de la macro, lo que evita los errores de sintaxis y evita que el usuario tenga que dominar el lenguaje Visual Basic.

El segundo método exige que el usuario domine el lenguaje Visual Basic.

En primer lugar, vamos a poner en práctica el primer método.

 Abra el libro Incidentes.xlsx.

 Cada fila de la hoja Incidentes registra una avería acaecida en una cadena de producción. 

images/OST10_363.png

Se ha creado un rango dinámico (BaseDatos) que se ha utilizado como fuente de la tabla dinámica presentada en la hoja TD.

images/OST10_364.png

Para familiarizarse con la sintaxis VBA relativa a las tablas dinámicas, vamos a crear dos macros a fin de modificar la disposición de nuestra tabla dinámica dejando que Excel grabe nuestras acciones.

  • La primera macro va a mostrar el coste total de la mano de obra por línea de fabricación. 

  • La segunda va a mostrar el coste total de la mano de obra por tipo de avería.

Crear una tabla dinámica con la ayuda de una macro

Active la pestaña Programador

Si no ha trabajado nunca con la pestaña Programador, actívela:

 Haga clic derecho en la cinta y haga clic en la opción Personalizar la cinta de opciones

 En la categoría Personalizar cinta de opciones, en la lista Pestañas principales, active la casilla Programador y haga clic en Aceptar.

images/OST10_365.png

A la derecha de la pestaña Vista, se ha añadido la pestaña Programador.

Grabar las macros

Durante la grabación de una macro, Excel transcribe todas nuestras acciones al lenguaje VBA. Si comete algún error durante la grabación, este error se grabará y se reproducirá en cada ejecución de la macro.

Tenga cuidado en la fase de grabación, vaya paso a paso.

 Para que la macro pueda grabar la ubicación del cursor en la hoja correcta, en primer lugar haga clic en una celda de la hoja INCIDENTES.

 En la pestaña Programador, grupo Código, haga clic en el botón Grabar macro.

 Introduzca el nombre de la macro en el cuadro de diálogo y haga clic en Aceptar.

El atajo de teclado le permitirá más tarde ejecutar rápidamente la macro. La descripción permite explicar qué hace la macro.

images/OST10_366.png

A partir de ahora, Excel graba todas sus acciones. Fíjese en la esquina inferior izquierda de su pantalla en el botón...

Modificar las macros

Con objeto de que nuestra tabla resulte más agradable a la vista, vamos a añadir una imagen que se va a modificar en función de la estadística que se muestre. Para ello, vamos a usar las imágenes ImgElec.png e ImgMug.png.

 En primer lugar, inserte un rectángulo debajo de la tabla (pestaña Insertar - Ilustraciones - Formas - Rectángulo).

 Cámbiele el nombre: pestaña Inicio - grupo Edición - Buscar y seleccionar - Panel de selección

 En el panel Selección, reemplace el nombre del rectángulo por MarcoFoto.

 Acceda al editor de VisualBasic para editar los dos procedimientos.

El listing de las macros se detalla a continuación:

Sub ManoObra_LínProd ()  
' ManoObra_LínProd Macro  
    Dim RutaImagen As String  
' Definición de la ruta de la imagen  
    RutaImagen = "D:\2019-Excel TD\Cap-10\ImgMug.png"  
'Modificación de la imagen  
   ActiveSheet.Shapes.Range(Array("MarcoFoto")).Select  
   With Selection.ShapeRange.Fill  
        .Visible = msoTrue  
        .UserPicture RutaImagen  
   End With  
  
' Cálculo del total de mano de obra por línea...

Complementos

Si tiene que crear otras macros, utilice siempre para empezar el modo de grabación, lo que le permitirá obtener fácilmente la sintaxis Visual Basic de las diferentes funcionalidades de las tablas dinámicas. Así podrá obtener y modificar el código para filtrar, agrupar, modificar los formatos…

A continuación, le mostramos algunos ejemplos de código.

No mostrar la lista de campos

  ActiveWorkbook.ShowPivotTableFieldList = False 

Dar formato a los valores de la tabla en euros

    With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields( _  
       "Suma de IMPORTE")  
       .NumberFormat = "#.##0,00 €"  
   End With 

Actualizar una tabla dinámica

    ActiveSheet.PivotTables("Tabla dinámica1").PivotCache.Refresh 

Actualizar todas las tablas dinámicas

    ActiveWorkbook.RefreshAll 

Eliminar los totales de filas

    ActiveSheet.PivotTables("Tabla dinámica1").ColumnGrand = False 

Eliminar los totales de columnas

    ActiveSheet.PivotTables("Tabla dinámica1").RowGrand = False 

Mostrar el total de columnas y ocultar el total de filas

    With ActiveSheet.PivotTables("Tabla dinámica1")  
       .ColumnGrand = False  ...