
Tengo una tabla de la que necesito extraer algunos datos y no estoy muy seguro de cómo hacerlo.
A continuación se muestra un ejemplo de la tabla.
| A + B + C + D + E + F |
|--------+--------+---------------+-------+--------+--------|
| FNAME | LNAME | FULLNAME | GRADE | EFFORT | CODE |
|--------+--------+---------------+-------+--------+--------|
| FNAME1 | LNAME1 | FNAME1 LNAME1 | A | | GRADE |
|--------+--------+---------------+-------+--------+--------|
| FNAME1 | LNAME1 | FNAME1 LNAME1 | H | | EFFORT |
|--------+--------+---------------+-------+--------+--------|
| FNAME2 | LNAME2 | FNAME2 LNAME2 | C | | GRADE |
|--------+--------+---------------+-------+--------+--------|
Lo que necesito es mover el grado de esfuerzo a la columna de esfuerzo, pero en una fila diferente. Ejemplo a continuación.
| A + B + C + D + E + F |
|-------+-------+-----------+-------+--------+--------|
| FNAME | LNAME | FULLNAME | GRADE | EFFORT | CODE |
|-------+-------+-----------+-------+--------+--------|
| NAME1 | NAME1 | NAMENAME1 | A | | GRADE | ← To column E here ←
|-------+-------+-----------+-------+--------+--------| ↑
| NAME1 | NAME1 | NAMENAME1 | H | | EFFORT | → Move this Grade from column D ↑
|-------+-------+-----------+-------+--------+--------|
Entonces un ejemplo de lo que quiero...
| A + B + C + D + E + F |
|--------+--------+---------------+-------+--------+--------|
| FNAME | LNAME | FULLNAME | GRADE | EFFORT | CODE |
|--------+--------+---------------+-------+--------+--------|
| FNAME1 | LNAME1 | FNAME1 LNAME1 | A | H | GRADE |
|--------+--------+---------------+-------+--------+--------|
| FNAME2 | LNAME2 | FNAME2 LNAME2 | C | | GRADE |
|--------+--------+---------------+-------+--------+--------|
Lo bueno es que no todos los estudiantes tienen una calificación de esfuerzo, y si no la tienen, no habrá pelea por ello. Además, a veces habrá una fila adicional con comentarios, etc., por lo que los datos no son constantes.
Respuesta1
En una hoja nueva, copie los encabezados ( A1:F1
) e ingrese un 1 en una columna auxiliar. Asumiré que estás usando Column G
; es decir, celular G1
. Ingresar
=IF(INDEX(Sheet1!A:A, $G2)<>"", INDEX(Sheet1!A:A, $G2), "")
en A2
y arrastre/rellene hacia la derecha, hasta F2
. Luego cambia E2
a
=IF(INDEX(Sheet1!F:F, $G2+1)="EFFORT", INDEX(Sheet1!D:D, $G2+1), "")
y entrar
=IF(INDEX(Sheet1!F:F, $G1+1)="GRADE", $G1+1, $G1+2)
en G2
. Seleccione A2:G2
y arrastre/rellene tanto como sea necesario.
Luego oculta la Columna G
, si quieres.
La columna G
es el índice (en la nueva hoja) de la fila de Sheet1
la que (principalmente) estamos extrayendo datos. Es uno más que el índice de la línea anterior a menos que apunte a la fila cuyo CÓDIGO sea GRADE
, en cuyo caso asumimos que es una EFFORT
fila y sumamos dos a la anterior (es decir, para saltarnos la EFFORT
fila). Columnas A
: D
y F
simplemente se copian de la misma columna Sheet1
, según lo indexado por Columna G
. La fórmula en la Columna E
(ESFUERZO) busca ver si el estudiante actual es uno con dos filas (por lo tanto, $G2+1
se refiere al mismo estudiante, con un CÓDIGO de EFFORT
) y, de ser así, extrae la calificación de ESFUERZO de la Columna D
de esa segunda fila.
Para estos datos:
+ A + B + C + D + E + F +
+-------+--------+--------------+-------+--------+--------+
| FNAME | LNAME | FULLNAME | GRADE | EFFORT | CODE |
+-------+--------+--------------+-------+--------+--------+
| John | Smith | John Smith | A | | GRADE |
| John | Smith | John Smith | H | | EFFORT |
| Mary | Jones | Mary Jones | B | | GRADE |
| Isaac | Newton | Isaac Newton | A+ | | GRADE |
| Isaac | Newton | Isaac Newton | C | | EFFORT |
+-------+--------+--------------+-------+--------+--------+
Obtuve este resultado:
Respuesta2
Puedes manejar eso sin pivotar.
Según su ejemplo, coloque esto en su Effort
columna en Sheet2
:
=INDEX(Sheet1!$D$2:$D$10, MATCH(1, (Sheet2!$C2 = Sheet1!$C$2:$C$10) * (Sheet1!$F$2:$F$10 = "EFFORT"), 0))
y presione Ctrl+ Shift+ Enterpara insertar la fórmula matricial.
Explicación
Sheet1!$D$2:$D$10
es su Effort
columna en su tabla fuente en la Hoja1.
(Sheet2!$C2 = Sheet1!$C$2:$C$10)
está buscando la coincidenciaFULLNAME
(Sheet1!$F$2:$F$10 = "EFFORT")
está buscando la coincidencia CODE
, que es "ESFUERZO"
Ambos devuelven un valor booleano 0
y 1
. Si ambas condiciones coinciden (encontró una fila con NOMBRE COMPLETO y CÓDIGO coincidentes), devuelve 1 ( 1 * 1
) a la MATCH
función.