
Consulte la imagen para ver una descripción del problema y un ejemplo.
Quiero devolver la letra correspondiente al primer número mayor que mi valor/número de búsqueda.
He estado intentando resolver esto usando index-match pero solo parece funcionar si hay una coincidencia exacta entre el valor de búsqueda y los números con los que se compara.
Esta es la fórmula que pensé que funcionaría pero no funciona: =+INDEX(A3:F3,MATCH(A6,A2:F2,-1))
Respuesta1
Como se analizó en el enlace que proporciono en los comentarios, MATCH(,,-1)
requiere que los datos se ordenen en orden descendente o se producirá un error.
Para obtener lo que usted dijo literalmente ("el primer número mayor que mi valor/número de búsqueda", puede usar:
=INDEX(A3:F3,MATCH(A6,A2:F2,1)+1)
Para obtener una coincidencia con el primer número igualomayor que su valor de búsqueda, puede usar:
=INDEX(A3:F3,IFERROR(MATCH(A6,A2:F2,0)-1,MATCH(A6,A2:F2,1))+1)
Respuesta2
Se podrían haber hecho muchas cosas aquí. Para algo un poco más "extravagante" pero con una fórmula más corta, entonces... se podría usar:
=INDEX(FILTER(A2:F3,A2:F2>=A6),2,1)
FILTER()
se configura de esta manera para devolver la letra deseada en la primera columna de la matriz resultante (dicha matriz solo se usa internamente). Por lo tanto, uno sabría con precisión que la letra deseada es "fila 2, columna 1", sin importar lo que haga que la INDEX()
función sea fácil de completar.
"Mayor que" o "igual o mayor que" se maneja de la manera a la que uno está mucho más acostumbrado, es decir, usando ">" o ">=" en la condición en FILTER()
.
Aborda el caso en el que la fila de búsqueda no está ordenada (como fuera de orden) porque FILTER()
ordenará su matriz resultante sin que se le solicite. Entonces, sin importar la condición de la fila de búsqueda, se devuelve la respuesta correcta.
Si no lo tiene FILTER()
disponible, podría usar lo siguiente como matriz para MATCH()
encontrar y alimentar INDEX()
su valor:
=MIN(IFERROR((A2:F2)/(A2:F2>=A6),MAX(A2:F2)))
Casi completamente de la vieja escuela y se puede sustituir por uno IF(ISERROR(...
si no se tiene IFERROR()
disponible. Los valores se dividen por 1 o 0 de la prueba ">=" para que se produzcan los valores en la fila de búsqueda O se produzca un error, pero en esos casos, MAX()
se completa el valor más alto en la fila de búsqueda para que no interferir con la búsqueda del valor deseado. Si las circunstancias lo necesitan, se podría introducir un "+1" en el MAX()
resultado para que todos los menos excedan las entradas "naturales".
Por supuesto, hoy en día XLOOKUP()
lo haría muy bien:
=XLOOKUP(A6,A2:F2,A3:F3,,1)
Corto, sencillo, claro. No se necesitan trucos.
( F Bert
Estaba feliz. Solo los publico para cualquiera que esté investigando y necesite una respuesta que no esté ligada al único conjunto de factores del problema).