Alguém que pode me ajudar com uma fórmula que verifica se um valor está entre o valor máximo e mínimo com etapas disponíveis definidas? Exemplo: Os valores disponíveis são fornecidos como A1 = 1 (limite mínimo) B1 = 2 (limite máximo) C1 = 0,2 (etapas disponíveis) O que significa que os valores disponíveis serão: 1, 1,2, 1,4, 1,6, 1,8 e 2. Da mesma forma o valor 1.1 não é válido. A fórmula deverá retornar “Err” se o valor em A2 não estiver de acordo com os limites e etapas disponíveis. A fórmula =IF(OR(A2B1);"Err";”ok”), lida com limites mínimo e máximo, mas não com etapas disponíveis.
Responder1
use SE(SUMPRODUTO())
=IF(SUMPRODUCT(--(A1+C1*(ROW($ZZ$1:INDEX($ZZ:$ZZ,INT((B1-A1)/C1)+1))-1)=A2)),"OK","ERR")
(ROW($ZZ$1:INDEX($ZZ:$ZZ,INT((B1-A1)/C1)+1))-1
cria uma matriz de números de 0 até o número de vezes que as etapas necessárias para chegar ao limite superior.
Esse array é então passado para o math: A1+C1*...=A2
e um array de TRUE/FALSE é criado. SUMPRODUCT conta os TRUEs e se houver, neste caso é 1 ou 0, The If retornará TRUE.
Usando Dynamic Arrays (disponível apenas no Office 365), podemos encurtar isso:
=IF(OR(SEQUENCE((B1-A1)/C1+1,,A1,C1)=A2),"OK","ERR")
Edite, para evitar a série de etapas:
=IFERROR(IF(AND(A2>=A1,A2<=B1,MOD(ROUND((A2-A1)/C1,10),1)=0),"OK","Err"),"Nb! Check ""Step"" input")
Responder2
Encontrei alguns problemas com a fórmula "=IF(SUMPRODUCT"... 1) na fórmula há um limite de número de etapas possíveis 2) Prefiro evitar o uso de $, já que a fórmula é copiada descontroladamente para pastas de trabalho diferentes.
Eu descobri uma fórmula diferente (a parte antes de "Iferror" trata de casos em que as etapas não estão definidas):
=SE(C1="";SE(AND(A2>=MIN(A1:B1);A2<=MAX(A1:B1));"ok";"Err");SEERRO(SE(AND(INT( (A2-A1)/C1)=(A2-A1)/C1=VERDADEIRO;(A2-A1)/C1<=(B1-A1)/C1;(A2-A1)/C1>=0);"ok ";"Err");"Nb! Verifique a entrada ""Etapa""))
'Observação! por algum motivo, a fórmula produz um erro que não consigo entender. Nas fórmulas abaixo, eu esperaria que as fórmulas INT nas células A6 e A10 fossem iguais a 5.