Tengo una columna de datos en Excel con números [0..100]. Necesito una nueva columna, que los asigne a un nuevo conjunto de valores tales que:
- > 90 : 4
- 80-90: 3
- 70-79: 2
- 60-69: 1
- <60: 0
Intenté hacer esto conBUSCARV, específicamente con una entrada de prueba 77
y la llamada a la función VLOOKUP(77, A10:B19, 2, TRUE)
, donde A10 es el elemento superior izquierdo en este rango:
99 4 90 4 89 3 80 3 79 2 70 2 69 2 60 1 59 0 0 0
Sin embargo, obtengo un resultado de #N/A
. Según la documentación, esto se debe a que
...el valor en lookup_value es menor que el valor más pequeño en la primera columna de table_array...
Sin embargo, claramente ese no es el caso, ya que estoy pasando 77. Sin embargo, si uso una entrada de prueba de 79
, un valor que está explícitamente en la tabla de búsqueda, obtengo un resultado correcto.
¿BUSCARV es el enfoque incorrecto aquí? ¿Cuál es la mejor manera de hacer este tipo de mapeo?
Debo mencionar que tanto mi valor de entrada como mi tabla de búsqueda se escriben como Número.
Respuesta1
Si usa Index/Match en lugar de Vlookup, puede mantener la tabla de búsqueda ordenada de forma descendente como se publicó en su pregunta. La fórmula es
=INDEX(B1:B10,MATCH(77,A1:A10,-1))
Si coincide con -1 como tercer parámetro, se devolverá un valor mayor o igual al valor de búsqueda cuando la tabla esté ordenada de forma descendente.
Respuesta2
Después de investigar esto durante mucho tiempo, aprendí que la tabla de búsqueda debe ordenarse de forma ascendente. La documentación indica que debe ordenarse, pero no especifica el orden de clasificación. Cualquier cosa que no sea el orden ascendente genera un #N/A
error.