%20Generar%20una%20fila%20de%20encabezado%20de%20nombres%20de%20cursos.png)
Tengo varios estudiantes que han seleccionado en qué clases quieren estar en la primera hoja. En la segunda hoja, me gustaría generar una lista para cada clase con los nombres de los estudiantes de esa clase según sus selecciones. ¿Hay alguna forma de hacer esto?
Respuesta1
1) Generar una fila de encabezado de nombres de cursos
Lo primero es lo primero, en la hoja 2 necesitas generar una lista horizontal de clases. Puede hacer esto manualmente o puede usar la siguiente fórmula para generar una lista ordenada de nombres de clases únicos usados a partir de las elecciones de los estudiantes para las clases 1-3. Incluso debería funcionar para ignorar las entradas de clase en blanco. Las únicas dos advertencias que se me ocurren es que es necesario tener la celda a la izquierda de la lista que sea igual a cualquiera de los nombres de la lista. La otra advertencia es que se trata de una fórmula matricial y requerirá CONTROL+ SHIFT+ ENTERen lugar de simplemente ENTERconfirmar la fórmula. Sabrá que lo ha hecho bien cuando aparezca { } alrededor de la fórmula. Tenga en cuenta que { } no se puede agregar manualmente.
En el ejemplo, pegué la siguiente fórmula en la Hoja2!B2 y la copié hacia la derecha hasta que aparecieron celdas en blanco.
=IFERROR(INDEX(Sheet1!$B$2:$D$9,SMALL(IF(SMALL(IF(COUNTIF($A$2:A2,Sheet1!$B$2:$D$9)+ISBLANK(Sheet1!$B$2:$D$9)=0,COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1,""),1)=IF(ISBLANK(Sheet1!$B$2:$D$9),"",COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1),ROW(Sheet1!$B$2:$D$9)-MIN(ROW(Sheet1!$B$2:$D$9))+1),1),MATCH(MIN(IF(COUNTIF($A$2:A2,Sheet1!$B$2:$D$9)+ISBLANK(Sheet1!$B$2:$D$9)>0,"",COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1)),INDEX(IF(ISBLANK(Sheet1!$B$2:$D$9),"",COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1),SMALL(IF(SMALL(IF(COUNTIF($A$2:A2,Sheet1!$B$2:$D$9)+ISBLANK(Sheet1!$B$2:$D$9)=0,COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1,""),1)=IF(ISBLANK(Sheet1!$B$2:$D$9),"",COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1),ROW(Sheet1!$B$2:$D$9)-MIN(ROW(Sheet1!$B$2:$D$9))+1),1),,1),0),1),"")
Al ser una fórmula matricial, no utilice referencias de fila/columna completa como A:A o 3:3, ya que provocará que se realice una cantidad excesiva de cálculos.
2) Generar una lista de nombres
Para generar una columna de nombres que eligieron el curso en la fila del encabezado como una de sus 3 opciones, se puede utilizar la siguiente fórmula. En el siguiente ejemplo, esta fórmula se colocó en la Hoja2!B3 y se copió hacia la derecha para que coincida con la lista de nombres de cursos y hacia abajo hasta que solo haya filas en blanco.
=IFERROR(INDEX(Sheet1!$A:$A,AGGREGATE(14,6,ROW(Sheet1!$B$2:$D$9)/(Sheet1!$B$2:$D$9=B$2),ROW(A1))),"")
La función AGREGAR puede realizar operaciones similares a matrices dependiendo del número de fórmula seleccionado. Cuando el primer número de parámetro es 14 o 15 y aparentemente algunos otros, se realizarán operaciones tipo matriz. El segundo parámetro numérico le dice a AGGREGATE que ignore los resultados de error, las filas ocultas, entre otras cosas, creo. Como resultado de los cálculos tipo matriz, nuevamente evite usar referencias de columnas completas dentro de la función AGREGAR.
Fuente: Hoja1
Salida: Hoja2
SI un estudiante elige el mismo curso más de una vez, su nombre aparecerá más de una vez en la lista.