Tengo datos que se ven así:
Id | Loc1 | Loc2 | Loc3 | Loc4
---+------+------+------+-----
1 | NY | CA | TX | IL
2 | WA | OR | NH | RI
Y quiero convertirlo a esto:
Id | LocNum | Loc
---+--------+----
1 | 1 | NY
1 | 2 | CA
1 | 3 | TX
1 | 4 | IL
2 | 1 | WA
2 | 2 | OR
2 | 3 | NH
2 | 4 | RI
¿Cuál es la forma más fácil de hacer esto en Excel 2007?
Respuestas:
Puede hacer esto con una tabla dinámica.
Debería ver una nueva hoja que contiene todos los datos en su tabla dinámica, transpuesta de la manera que está buscando.
Las tecnologías Datapig proporcionan instrucciones paso a paso que en realidad son más complicadas de lo que necesita: su ejemplo transpone solo una parte del conjunto de datos y utiliza la técnica de pivote combinada con TextToColumns . Pero tiene muchas fotos.
Tenga en cuenta que una tabla dinámica agrupará los datos. Si desea desagruparlo, la única forma de hacerlo es copiar la tabla dinámica y "pegar especial" como valores. Luego puede completar los espacios en blanco con una técnica como esta: http://www.contextures.com/xlDataEntry02.html
fuente
Si sus datos no son una tabla dinámica de Excel sino solo datos, es posible que desee "desanclarlos" con algún código VBA simple. El código depende de dos rangos con nombre, Origen y Destino. El origen son los datos que desea desenrollar (excluyendo los encabezados de columna / fila, por ejemplo, NY-RI en la muestra) y el Destino es la primera celda donde desea colocar su resultado.
fuente
He creado un complemento que le permitirá hacer eso, y que facilita la adaptación a diferentes situaciones. Compruébalo aquí: http://tduhameau.wordpress.com/2012/09/24/the-unpivot-add-in/
fuente
Hay una solución bastante buena en Excel 2010, solo hay que jugar un poco con la tabla dinámica.
Cree una tabla dinámica a partir de sus datos con esta configuración:
fuente
Lo mejor que he encontrado hasta ahora es esto:
Esto funciona, pero tengo que generar los Id y LocNum manualmente. Si hay una solución más automatizada (además de escribir una macro), hágamelo saber en una respuesta por separado.
fuente
Si las dimensiones de sus datos son como en la muestra provista en su pregunta, entonces el siguiente conjunto de fórmulas que usan OFFSET debería darle el resultado requerido:
Asumiendo
están en el rango A2: E3, luego ingrese
en F2, digamos, y
en G2, digamos, y
en H2, digamos.
Luego copie estas fórmulas hasta donde sea necesario.
Esta es la solución de fórmula incorporada más sencilla, pura que se me ocurre.
fuente
Parece que ha obtenido la columna "loc" (evidenciada por su primera respuesta), y ahora necesita ayuda para obtener las otras dos columnas.
Su primera opción es simplemente escribir las primeras filas (por ejemplo, 12) en esas columnas y arrastrar hacia abajo; creo que Excel hace lo correcto en este caso (no tengo Excel en esta computadora para probarlo con seguridad).
Si eso no funciona, o si desea algo más programador, intente usar la función row (). Algo así como "= Floor (row () / 4)" para la columna ID y "= mod (row (), 4) +1" para la columna LocNum.
fuente
Hay una utilidad de conversión de VBA paramétrica para desconectar o revertir los datos pivotados a una tabla de base de datos, consulte
http://www.spreadsheet1.com/unpivot-data.html
fuente
Aquí hay una buena herramienta para desconectar, normalizar una tabla dinámica.
Normalisieren von Pivot Tabellen
Espero que ayude.
fuente
La respuesta de @DaveParillo es la mejor respuesta para una tabla de una sola pestaña. Quería agregar algunos extras aquí.
Para columnas múltiples antes de las columnas no dinámicas
Este método no funciona.
Youtube desconecta datos simples como la pregunta
Este es un video de YouTube que muestra cómo hacerlo de una manera simple. Me salteé la parte sobre agregar el atajo y usé el atajo @devuxer que está en la respuesta de DaveParillo.
https://www.youtube.com/watch?v=pUXJLzqlEPk
fuente
Es mucho más simple que esto. Simplemente haga clic en la opción "Transponer" en "Pegado especial ..." para obtener la transposición que está solicitando.
fuente