
¿Podría ayudarme con el siguiente requisito?
He mantenido rangos en las columnas A y B. Los valores relevantes para cada rango se mencionan en la columna C. Por ejemplo, consulte a continuación:
| Column A | Column B | Column C |
| 1 | 10 | A |
| 15 | 20 | B |
| 21 | 30 | C |
Ahora tengo otra columna E donde inserté un número, por ejemplo 17. Ahora me gustaría saber en qué rango se encuentra este número para poder ingresar el valor relevante de la columna C. En este ejemplo, 17 cae en la rango de 15 a 20 que está en la fila 2 y cuyo valor en la columna C es B. Por lo tanto, para la cifra de 17, la salida debería ser B. En caso de que ingrese 25, la salida debería ser C. Pero si ingreso 12, el resultado debe ser #N/A porque este número no se encuentra dentro de ningún rango.
¿Puedo saber si existe alguna fórmula de Excel que pueda usar para obtener este tipo de resultado? Prefiero utilizar fórmulas en lugar de codificación. Gracias por tu tiempo para guiarme en este sentido.
Saludos cordiales, Sridhar
Respuesta1
Sí, se puede hacer. Necesita una línea adicional en la tabla para que funcione.
Agregué la línea
| 0 | 0 | #N/A |
en la tabla como la primera línea, por lo que la tabla ahora ocupaA1:C4.
Utilizo la INDEX
función para decidir qué línea necesito devolver.
Para calcular la línea, utilizo SUMPRODUCT
para calcular la fila que utilizará INDEX.
La fórmula completa se convierte en:
=INDEX(C1:C4,SUMPRODUCT(--(A1:A4<=D1),--(B1:B4>=D1),ROW(C1:C4)))
, con el valor a comprobarD1
Repasando la fórmula conD1que contiene 17
:
=INDEX(C1:C4,SUMPRODUCT(--(A1:A4<=17),--(B1:B4>=17),ROW(C1:C4)))
=INDEX(C1:C4,SUMPRODUCT(--({0,1,15,21}<=17),--({0,10,20,30}>=17),{1,2,3,4}))
=INDEX(C1:C4,SUMPRODUCT(--({True,True,True,False}),--({False,False,True,True}),{1,2,3,4}))
=INDEX(C1:C4,SUMPRODUCT({1,1,1,0}),({0,0,1,1}),{1,2,3,4}))
=INDEX(C1:C4,(1*0*1 + 1*0*2 + 1*1*3 + 0*1*4))
=INDEX(C1:C4,3)
="B"
Si el número queda fuera del rango, no habrá una parte en SUMPRODUCT donde la línea de valores no sea igual 0
, por lo que devolverá el primer valor en el rango, que será #N/A. Misma fórmula, pero con 12
inD1:
=INDEX(C1:C4,SUMPRODUCT(--(A1:A4<=12),--(B1:B4>=12),ROW(C1:C4)))
=INDEX(C1:C4,SUMPRODUCT(--({0,1,15,21}<=12),--({0,10,20,30}>=12),{1,2,3,4}))
=INDEX(C1:C4,SUMPRODUCT(--({True,True,False,False}),--({False,False,True,True}),{1,2,3,4}))
=INDEX(C1:C4,SUMPRODUCT({1,1,0,0}),({0,0,1,1}),{1,2,3,4}))
=INDEX(C1:C4,(1*0*1 + 1*0*2 + 0*1*3 + 0*1*4))
=INDEX(C1:C4,0)
="#N/A"
No es técnicamente#N / A, es una matriz de todas las respuestas posibles, pero como no ingresamos la fórmula como una fórmula matricial, solo nos da el primer valor