Rediseñador de mesas

Contenido

No es ningún secreto que la mayoría de los usuarios de Excel, al crear tablas en hojas, piensan en primer lugar en su propia comodidad y conveniencia. Así es como nacen las tablas hermosas, coloridas y engorrosas con "encabezados" complejos que, al mismo tiempo, no se pueden filtrar ni ordenar en absoluto, y es mejor no pensar en un informe automático con una tabla dinámica.

Tarde o temprano, el usuario de una mesa de este tipo llega a la conclusión de que "puede que no sea tan hermoso, pero puede funcionar" y comienza a simplificar el diseño de su mesa, ajustándolo a las recomendaciones clásicas:

  • un encabezado simple de una línea, donde cada columna tendrá su propio nombre único (nombre de campo)
  • una línea: una operación completada (acuerdo, venta, publicación, proyecto, etc.)
  • sin celdas combinadas
  • sin interrupciones en forma de filas y columnas vacías

Pero si crea un encabezado de una línea a partir de uno de varios niveles o divide una columna en varias, es bastante simple, entonces la reconstrucción de la tabla puede llevar mucho tiempo (especialmente en tamaños grandes). Significa la siguiente situación:

Of     Rediseñador de mesas   do     Rediseñador de mesas  

En términos de bases de datos, la tabla correcta generalmente se llama plana (plana): de acuerdo con dichas tablas, es mejor crear informes de tablas dinámicas (tablas dinámicas) y realizar análisis.

Puede convertir una tabla bidimensional en una tabla plana usando una macro simple. Abra el Editor de Visual Basic a través de la pestaña Desarrollador – Visual Basic (Desarrollador — Editor de Visual Basic) o atajo de teclado otro+F11. Insertar un nuevo módulo (Insertar – Módulo) y copiar el texto de esta macro allí:

Sub Redesigner() Dim i As Long Dim hc As Integer, hr As Integer Dim ns As Worksheet hr = InputBox("¿Cód. Falso i = 1 Set inpdata = Selection Set ns = Worksheets.Add For r = (hr + 1) To inpdata.Rows.Count For c = (hc + 1) To inpdata.Columns.Count For j = 1 To hc ns. Cells(i, j) = inpdata.Cells(r, j) Next j For k = 1 To hr ns.Cells(i, j + k - 1) = inpdata.Cells(k, c) Next k ns.Cells( i, j + k - 1) = inpdata.Cells(r, c) i = i + 1 Siguiente c Siguiente r End Sub  

A continuación, puede cerrar el editor de VBA y volver a Excel. Ahora podemos seleccionar la tabla original (completa, con un encabezado y la primera columna con meses) y ejecutar nuestra macro a través de Desarrollador – Macros (Desarrollador — Macros) o presionando combinación otro+F8.

La macro insertará una nueva hoja en el libro y creará una nueva versión reconstruida de la tabla seleccionada en él. Puede trabajar con una tabla de este tipo "en su totalidad", utilizando todo el arsenal de herramientas de Excel para procesar y analizar listas grandes.

  • ¿Qué son las macros, dónde insertar código de macro en VBA, cómo usarlas?
  • Creación de informes con tablas dinámicas
  • Herramienta para rediseñar XNUMXD mesas a planas desde el complemento PLEX

 

Deje un comentario