
Quiero que la información de algunas columnas (pero no todas) se muestre en filas; consulte un ejemplo a continuación.
Esto es lo que tengo (desafortunadamente esto no permite espacios adicionales, por lo que todo está desalineado, intente imaginarlo todo alineado):
Patient Visit 1 Visit 2 Visit 3 Visit 4(…)
1 22Dec 12Jan 03Feb
2 3Jan 03Feb 01Mar
3 10Dec 03Jan 23Jan
(…)
(etc., base de datos larga con cientos de pacientes)
Así es como quiero que se vea:
Patient Visit type Date
1 Visit 1 22Dec
1 Visit 2 12Jan
1 Visit 3 03Feb
2 Visit 1 23Jan
2 Visit 2 (…)
(…)
No implica ningún cálculo, es solo manipulación de datos, básicamente ordenar las visitas por paciente, pero no estoy seguro de ninguna función que haga esto, probé la tabla dinámica pero no parece hacerlo así... ¿Alguna sugerencia? Si no hay fórmulas, botones, etc., ¿tal vez pueda sugerir una macro?
¡Muchas gracias!
Respuesta1
Con datos como:
EnH2ingresar:
=ROUNDUP(ROWS($1:1)/6,0)
y copiar hacia abajo. en la celdaI2ingresar:
=INDEX($B$1:$G$1,MOD(ROWS($1:1)-1,6)+1)
y copie hacia abajo. EnJ2ingresar:
=INDEX($B$2:$G$10,ROUNDUP(ROWS($1:1)/6,0),MOD(ROWS($1:1)-1,5)+1)
y copiar hacia abajo:
NOTA:
El6en estas fórmulas corresponde al número de visitas en la tabla fuente. Ajústelo para satisfacer sus necesidades.
Respuesta2
No estaba claro si desea una transformación continua o simplemente transformar sus datos una vez. Si solo desea transformar sus datos una vez, aquí tiene una sugerencia: imaginemos que estos son sus datos ahora:
Como tiene un máximo de 4 visitas por paciente, cree manualmente las filas para el primer paciente, así:
Para la columna de fecha, aplique la BUSCARV, buscando la columna según el tipo de visita:
Ahora construye manualmente las filas para el segundo paciente, pero ahora con algunas fórmulas podrás empujar hacia abajo:
Para la columna de fecha, simplemente presione hacia abajo lo que tiene del paciente 1:
Ahora, seleccione el bloque completo del paciente 2 y presione hacia abajo:
Incluso cuando no haya fecha, funcionará.
¿Esto te convendrá?
Respuesta3
Mi enfoque utiliza unBúsqueda bidireccionaltécnica, al igual que una de las respuestas anteriores.
Vea las imágenes a continuación, que muestran los datos de muestra en la primera tabla, luego la lista de pacientes, el número de visita y la fecha, todo en el orden deseado, en la segunda tabla.
Aquí están las fórmulas para obtener:
Lista de pacientes:en la celda A10,=INT((ROW(A1)-1)/5)+1
Lista de tipos de visita: en la celda B10,="Visit"&INT(MOD(ROW(A1)-1,5))+1
Lista de fechas en la celda C10,=INDEX($B$2:$F$8,MATCH(A10,A$2:A$8,0),MATCH(B10,$B$1:$F$1,0))
Arrastre las 3 fórmulas hacia abajo, tanto como sea necesario.
Espero que esto te ayude.