Encontrar um número em um intervalo

Encontrar um número em um intervalo

Você poderia me ajudar com o requisito abaixo.

Mantive intervalos nas colunas A e B. Os valores relevantes para cada intervalo são mencionados na coluna C. Por exemplo, veja abaixo:

| Column A | Column B | Column C |
| 1        | 10       | A        |
| 15       | 20       | B        |
| 21       | 30       | C        |

Agora tenho outra coluna E onde inseri um número, por exemplo 17. Agora gostaria de saber em que intervalo esse número se enquadra para que o valor relevante da coluna C possa ser trazido. intervalo de 15 a 20 que está na linha 2 e cujo valor na coluna C é B. Assim, para o número 17, a saída deve vir como B. Caso eu insira 25, a saída deverá ser C. Mas se eu inserir 12, a saída deve ser #N/A porque esse número não se enquadra em nenhum intervalo.

Posso saber se existe alguma fórmula do Excel que eu possa usar para obter esse tipo de resultado. Prefiro usar fórmulas em vez de qualquer codificação. Obrigado pelo seu tempo para me orientar nesse sentido.

Atenciosamente, Sridhar

Responder1

Sim, isso pode ser feito – você precisa de uma linha extra na tabela para que funcione.

Eu adicionei a linha

| 0        | 0        | #N/A     |

na tabela como a primeira linha, então a tabela agora ocupaA1:C4.

Eu uso a INDEXfunção para decidir qual linha preciso retornar.
Para calcular a linha, utilizo SUMPRODUCTpara calcular a linha que o INDEX irá utilizar.
A fórmula completa fica:

=INDEX(C1:C4,SUMPRODUCT(--(A1:A4<=D1),--(B1:B4>=D1),ROW(C1:C4)))

, com o valor a ser verificadoD1

Percorrendo a fórmula comD1contendo 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"

Se o número estiver fora do intervalo, não haverá uma parte no SUMPRODUCT onde a linha de valores não seja igual 0, portanto retornará o primeiro valor do intervalo, que será o #N/A. Mesma fórmula, mas com 12inD1:

=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"

Não é tecnicamente#N / D, é uma matriz de todas as respostas possíveis, mas como não inserimos a fórmula como uma fórmula de matriz, ela nos fornece apenas o primeiro valor

informação relacionada