Manipular datos en Excel para ordenar los resultados por una determinada columna

Manipular datos en Excel para ordenar los resultados por una determinada columna

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:

ingrese la descripción de la imagen aquí

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:

ingrese la descripción de la imagen aquí

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:

ingrese la descripción de la imagen aquí

Como tiene un máximo de 4 visitas por paciente, cree manualmente las filas para el primer paciente, así:

ingrese la descripción de la imagen aquí

Para la columna de fecha, aplique la BUSCARV, buscando la columna según el tipo de visita:

ingrese la descripción de la imagen aquí

Ahora construye manualmente las filas para el segundo paciente, pero ahora con algunas fórmulas podrás empujar hacia abajo:

ingrese la descripción de la imagen aquí

Para la columna de fecha, simplemente presione hacia abajo lo que tiene del paciente 1:

ingrese la descripción de la imagen aquí

Ahora, seleccione el bloque completo del paciente 2 y presione hacia abajo:

ingrese la descripción de la imagen aquí

Incluso cuando no haya fecha, funcionará.

ingrese la descripción de la imagen aquí

¿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.

ingrese la descripción de la imagen aquí

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.

información relacionada