2
respostas

Funçao SES!

A aula sobre fórmulas e condições está excelente.
Mais gostaria de fazer uma abordagem diferente para facilitar o entendimento:
Quando se trabalha com classificação de valores no Excel, o ponto mais importante não é a função em si, mas a lógica por trás das condições.
No caso, o objetivo é classificar o estoque em três estados distintos: “Esgotado”, “Rever Estoque” e “Estoque OK”.
A dificuldade surge porque essas condições não são independentes entre si. Existe sobreposição, especialmente porque o valor zero também satisfaz a condição “menor que 10”.
A forma mais adequada de resolver isso com a função SES é organizar as condições de maneira hierárquica, começando pelo caso mais específico e seguindo para os mais abrangentes. Isso garante que nenhuma condição “capture” valores que deveriam ser tratados por outra regra mais importante.
A fórmula correta, considerando essa lógica, é:

=SES(C11=0;"Esgotado";C11<10;"Rever Estoque";C11>=10;"Estoque OK")

Essa construção funciona corretamente porque trata primeiro o caso mais restritivo possível, que é o valor igual a zero.
Em seguida, avalia os valores menores que dez, que agora necessariamente serão apenas de 1 a 9, já que o zero já foi tratado.
Por fim, a condição maior ou igual a dez cobre todo o restante dos valores possíveis.
Dessa forma, não há conflito entre as regras e cada faixa de valores é avaliada exatamente uma vez.
Reparem que substitui o valor 1(VERDADEIRO) pela lógica para ter mais legibilidade.
Um erro comum ao montar esse tipo de fórmula é inverter a ordem das condições.
Por exemplo, se a condição “menor que 10” vier antes de “igual a zero”, o Excel nunca chegará a testar o zero como um caso específico, porque ele já terá sido classificado como “Rever Estoque”.
Esse tipo de erro não gera aviso, mas compromete totalmente o resultado.
Outra abordagem possível é utilizar a função SE aninhada:
=SE(C11=0;"Esgotado";SE(C11<10;"Rever Estoque";"Estoque OK"))
Essa alternativa produz o mesmo resultado e segue exatamente a mesma lógica. A diferença está na legibilidade. Enquanto a função SES permite escrever condições de forma sequencial, o SE aninhado exige uma estrutura mais fechada, com dependência entre os testes. Em problemas simples como esse, ambas funcionam bem, mas conforme a complexidade aumenta, o uso de SES tende a ser mais claro.
Também é comum ver fórmulas que utilizam uma condição final genérica, como “1;” dentro do SES, funcionando como um “caso padrão”. Embora isso resolva o problema do ponto de vista técnico, não é a melhor prática quando todas as condições possíveis já são conhecidas.
Nesse cenário, explicitar cada faixa de valores torna a lógica mais transparente e evita ambiguidades futuras.
Portanto, a melhor solução não depende apenas da escolha da função, mas da forma como as condições são estruturadas.
A regra central é simples: sempre priorizar condições mais específicas antes das mais gerais.
Isso garante consistência, evita sobreposição e torna a fórmula mais confiável e fácil de manter.
Vale lembrar que os problemas mais difíceis de resolver são justamente aqueles que não geram avisos ou alertas.
Normalmente surgem quando uma fórmula, condição ou regra de negócio é sobrescrita silenciosamente.
Esse tipo de falha pode mascarar inconsistências na lógica, esconder erros estruturais e passar despercebido, tornando o diagnóstico muito mais complexo e demorado.”
Qualquer duvida comente ai.
Bons estudos.

2 respostas

Olá, Ronaldo! Tudo bem?

Sua explicação é uma verdadeira aula de lógica de programação aplicada ao Excel. Você tocou no ponto nevrálgico que muitos estudantes ignoram: a hierarquia das condições.

Abaixo, destaquei os pontos fundamentais da sua contribuição para que outros alunos possam fixar o conteúdo:

A Regra de Ouro: Do Específico para o Geral

Como você bem pontuou, se a condição C11 < 10 vier antes de C11 = 0, o valor zero será "capturado" pela primeira regra e classificado erroneamente como "Rever Estoque".

  • Lógica SES Correta: =SES(C11=0; "Esgotado"; C11<10; "Rever Estoque"; C11>=10; "Estoque OK").
  • O Porquê: O Excel avalia as condições na ordem em que aparecem. Uma vez que ele encontra uma correspondência verdadeira, ele para de testar as seguintes.

SE Aninhado vs. SES

A sua comparação entre as duas funções ajuda a desmistificar a escolha:

  • SE Aninhado: Ótimo para lógica binária dependente, mas pode se tornar confuso com muitos parênteses.
  • SES: Oferece uma leitura sequencial e limpa, ideal para quando temos várias faixas de valores conhecidas.

O Perigo do "Silêncio" na Lógica

Você fez um alerta valioso sobre os erros que não geram avisos. No Excel, uma fórmula que retorna o resultado errado por falha de lógica é muito mais perigosa do que uma fórmula com erro de digitação (como #VALOR!), pois ela pode passar despercebida em relatórios importantes.


Dica de Especialista para Legibilidade

Você mencionou que evitou o uso do 1; ou VERDADEIRO; ao final da função SES. Concordo plenamente que explicitar a última condição (C11 >= 10) torna o código mais autodocumentado.

Isso é excelente para a manutenção: se amanhã o critério de "Estoque OK" mudar para 15, o próximo analista saberá exatamente onde alterar, sem precisar deduzir o que o "caso padrão" estava cobrindo.

Parabéns pela excelente abordagem pedagógica! Com certeza ajudará muitos colegas a evitarem esses erros silenciosos de estrutura.

Pergunta para reflexão: Em um cenário com 10 ou mais condições de estoque, você ainda optaria pelo SES ou acredita que já seria o momento de pensar em uma tabela de busca com PROCX?

Olá Evandro.
Obrigado por seu feedback.
Se temos 10 ou mais condições de estoque, faz mais sentido migrar para uma tabela auxiliar com PROCX ou, em alguns casos específicos, usar SWITCH.
A decisão prática é simples:

  • Se as regras são muitas e podem ser organizadas em uma tabela - use PROCX
  • Se você está comparando um único valor com várias opções fixas - use SWITCH
  • Evite SES quando a lógica começa a ficar longa demais

Passo 1:
Criar uma tabela auxiliar, por exemplo:

Coluna A (Limite) | Coluna B (Status)
0                 | Crítico
10                | Baixo
20                | Médio
50                | Alto
100               | Excedente

Passo 2:
Usar PROCX com correspondência aproximada:

=PROCX(A1; A2:A6; B2:B6; ""; -1)

O argumento -1 faz o PROCX pegar o maior valor menor ou igual ao estoque.
Isso substitui várias condições de uma vez.
Vantagens:

  • Para mudar uma regra, você só altera a tabela
  • Para adicionar mais condições, basta inserir uma nova linha
  • A fórmula continua simples e limpa

Agora um exemplo com SWITCH.
SWITCH é útil quando você tem códigos fixos, não faixas numéricas.
Exemplo:

=SWITCH(A1; "A"; "Produto Crítico"; "B"; "Produto Baixo"; "C"; "Produto Normal"; "Desconhecido")

Aqui ele substitui vários SE ou SES comparando um único valor.
Limitação do SWITCH:

  • Não funciona bem com intervalos (tipo “menor que”, “maior que”)
  • Só compara igualdade

Se estamos lidando com regras de estoque reais (mínimo, máximo, ponto de reposição, categorias), a tabela auxiliar com PROCX é a abordagem mais profissional e escalável.
Confere ai e comenta qualquer duvida.
Obrigado.