Pregunta

Efectivamente quiero dar puntuaciones numéricas a las calificaciones alfabéticas y sumarlas.En Excel, poniendo el LOOKUP la función en una fórmula matricial funciona:

{=SUM(LOOKUP(grades, scoringarray))}

Con el VLOOKUP función esto no funciona (solo obtiene la puntuación del primer grado).Google Spreadsheets no parece tener la LOOKUP función y VLOOKUP falla de la misma manera usando:

=SUM(ARRAYFORMULA(VLOOKUP(grades, scoresarray, 2, 0)))

o

=ARRAYFORMULA(SUM(VLOOKUP(grades, scoresarray, 2, 0)))

¿Es posible hacer esto (pero tengo una sintaxis incorrecta)?¿Puede sugerir un método que permita realizar el cálculo en una celda simple como esta en lugar de ocultar las búsquedas en otro lugar y sumarlas después?

¿Fue útil?

Solución 3

Todavía no puedo ver las fórmulas en tu ejemplo (solo valores), pero eso es exactamente lo que estoy tratando de hacer en términos del resultado;Obviamente, ya puedo hacerlo "al lado" y sumar por separado; la clave para mí es hacerlo en una celda.

Lo he vuelto a mirar esta mañana - usando el MATCH La función para la búsqueda funciona en una fórmula matricial.Pero entonces el INDEX la función no.También he intentado usarlo con OFFSET y INDIRECT sin éxito.Finalmente, el CHOOSE La función no parece aceptar un rango de celdas como lista para elegir: el rango se degrada a un solo valor (la primera celda del rango).También cabe señalar que el CHOOSE La función solo acepta 30 valores para elegir (según la documentación).Todo muy molesto.Sin embargo, ahora tengo una solución funcional en una celda:utilizando el CHOOSE función y enumerar explícitamente las celdas de resultados una por una en los argumentos como este:

=ARRAYFORMULA(SUM(CHOOSE(MATCH(D1:D8,Lookups!$A$1:$A$3,0),
                                     Lookups!$B$1,Lookups!$B$2,Lookups!$B$3)))

Obviamente esto no se extiende muy bien, pero es de esperar que las tablas de búsqueda sean bastante fijas por naturaleza.Para tablas de búsqueda más grandes, es complicado escribir todas las celdas individualmente y algunas personas pueden exceder el límite de 30 celdas.

¡Sin duda agradecería una solución más elegante!

Otros consejos

Me temo que creo que la respuesta es no.Del texto de ayuda enhttp://docs.google.com/support/spreadsheets/bin/answer.py?answer=71291&query=arrayformula&topic=&type=

El verdadero poder de ARRAYFORMULA surge cuando tomas el resultado de uno de esos cálculos y lo envuelves dentro de una fórmula que toma argumentos de matriz o rango:SUMA, MAX, MIN, CONCATENAR,

Como vlookup requiere una sola celda para realizar la búsqueda (en el primer argumento), no creo que pueda hacerlo funcionar sin utilizar un rango separado de búsquedas.

Google Spreadsheets no parece tener la función BUSCAR

Presumiblemente no entonces, pero ahora sí lo tiene:

SO27774 example

grades Hoja1!A2:A4
scoringarray Hoja1!A2:B4

Sé que este hilo es bastante antiguo, pero he estado luchando con el mismo problema durante algún tiempo.Finalmente encontré una solución (bueno, Frankenstuvod una).Es sólo un poco más elegante, pero debería poder trabajar con grandes conjuntos de datos sin problemas.

La solución utiliza lo siguiente:

=ARRAYFORMULA(SUM(INDIRECT(ADDRESS(MATCH(), MATCH())))

como sustituto de la función vlookup.

¡Espero que esto ayude a alguien!

Puedes hacerlo fácilmente de esta manera codificándolo en la tabla VR:

=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, {{"A", 6};
                                         {"B", 5};
                                         {"C", 4};
                                         {"D", 3};
                                         {"E", 2};
                                         {"F", 1}}, 2, 0)), ))

0

o puedes usar algunas celdas laterales con reglas:

=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, E2:F, 2, 0)), ))

6


alternativas: https://webapps.stackexchange.com/a/123741/186471

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top