Notifications
Clear all

Condição SE dentro de uma condição SE.

7 Posts
2 Usuários
0 Reactions
1,391 Visualizações
(@vic7or)
Posts: 94
Estimable Member
Topic starter
 

Galera do Planilhando.com.br,
estou com uma dúvida sobre a utilização da clausula "SE".

Fiz um exemplo bem bobo, mas que apresenta bem a minha dúvida.
Está em anexo.

Estou fazendo uma fórmula com a seguinte estrutura:

=SE(A***=Planilha!$A*;"blablabla";SE(B=PROCV(B;Planilha!$B*;"blablabla";"abcdef")))

Explicando ela,
estou buscando um valor em uma célula e, se esse valor for verdadeiro, escrever "blablabla". Caso seja falso, fazer uma nova busca, e se o valor for satisfeito, escrever "blablabla", e se não for, "abcdef".
É um SE que, se o valor for falso, abre outro SE.

Mas, desde já, vocês poderiam matar a questão sem antes baixar o anexo:
A função matricial
=SE(VALOR;valor_se_verdadeiro;valor_se_falso), o valor "valor_se_falso" pode ser a função matricial SE?

Em anexo: um exemplo bem simples de um atendimento médico.

Que é finalidade é dizer se o paciente vai ser internado ou não. Ponto.

Com a seguinte condição:

Ele só interna pacientes com QUEIMADURAS GRAVES.

- De cara, ele diz que se o SINTOMA for "GRIPE", ele não será internado. Mesmo se a gravidade da gripe for extrema.
- Se for queimadura, ele só internará quem tiver queimaduras do Grau 4 e Grau 5.
- As queimaduras de Grau 3 e inferiores serão condicionadas a não serem motivo de internação.

O que for pra ser internado, é pra marcar como "S".
O que for pra não ser internado, é pra marcar como "N".

O problema:
Tudo funcionando, mas a última condição (valor_se_negativo), não está recebendo valor.

Qual a dica de vocês?

 
Postado : 22/05/2013 1:18 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Vic7or,

O parâmetro "valor_se_falso" pode ser uma outra função qualquer, inclusive outra função SE().

Cuidado com nomenclaturas. A fórmula que eu escrevi ficou matricial pq finalizei com Ctrl+Shift+Enter, e internamente o Excel trabalha com ela como se ela fosse uma matriz. O fato de ter o SE() ali, nao quer dizer que o SE() é matricial. Eu o utilizei matricialmente. Ok, isso resolve a nomenclatura.

Qto ao médico:
você pode usar tranquilamente, vários SE()s um dentro do outro, assim:

=SE(CONDIÇÃO; VALOR SE VERDADEIRO; SE(CONDIÇÃO; SE(CONDIÇÃO;VALOR SE VERDADEIRO;VALOR SE FALSO); SE(CONDIÇÃO;VALOR SE VERDADEIRO;"")))

aplicando:

supondo que J tenha o sintoma e K o grau da queimadura...

=SE(J2="GRIPE"; "INTERNA SIM"; SE(J2="QUEIMADURA"; SE(OU(K2=4;K2=5);"INTERNA SIM";"NÃO INTERNA NÃO");"NÃO INTERNA NÃO"))

Perceba... o Excel permite função dentro de função, em qualquer lugar... Entender este diferencial (q é possível usar funções dentro de funções) é super importante para se destacar de outros profissionais nesta área.

 
Postado : 22/05/2013 1:32 pm
(@vic7or)
Posts: 94
Estimable Member
Topic starter
 

Opa, eu obrigado pela dica.

Pois então,
a minha função tá funcionando.
Mas parece que não tá recebendo o último parâmetro na segunda função SE.

Por exemplo:

 = SE ( A2 = ( base_lista! $A$3 ) ; "N" ; SE ( B2 = ( PROCV ( B2 ; base_lista! $B$5:$B$6 ; 1 ; 0 ) ) ; "S" ; "N" ) )

O que essa função tá fazendo?

Tá inserindo em uma coluna, "S" ou "N".
Tá procurando na "base_lista" se A3 ("GRIPE") é equivalente ao valor procurado (A2).
Se for igual, tem que marcar como "N".
Mas, se for negativo, realizar uma busca que verifica se a gravidade do "sintoma" (queimadura ou gripe) é Grau 4 ou Grau 5.
Se for, marcar como "S".
Se não, marcar como "N".

O problema?
Tá funcionando tudo.
Mas se for queimadura com grau de 3 pra baixo, o resultado é #N/A
Se for queimadura de 4 ou 5, o resultado tá "S" (como eu quero).
Se não for queimadura, for gripe, já marca como "N" (como eu quero).
Só a clausula final do segundo SE que não tá pegando e eu gostaria de entender melhor.

 
Postado : 22/05/2013 1:59 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tentando Contribuir
O retorno #N/A deve-se ao fato de seu proc se "limitar" a base_lista!$B$5:$B$6; então qdo o valor For Grau 1 ou 2 ou 3 não será localizado, retornando o erro.
Poderia experimentar :
= SE(A2=base_lista!$A$3;"N";SEERRO(SE(B2=(PROCV(B2;base_lista!$B$5:$B$6;1;0));"S");"N"))

 
Postado : 22/05/2013 2:07 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

o erro N/A está aparecendo quando o PROCV() não encontra o conteúdo da coluna B na tabela em base_lista!$B$5:$B$6...
vamos pintar os seus SE()'s pra vc entender melhor:

= SE ( A2 = base_lista! $A$3 ; "N" ; SE ( B2 = PROCV ( B2 ; base_lista! $B$5:$B$6 ; 1 ; 0 ) ; "S" ; "N" ) )

1) apaguei alguns parenteses desnecessários
2) na primeira condição SE() vc está definindo um teste de condição (a2=base_lista!$A$3) e se verdadeiro, mostrar "N" na célula. Se for falso, então vc procura o conteúdo de B2 na base_lista!$B$5:$B$6, que acredito eu, devem ser os números 4 e 5. Quando você procura 1, 2 ou 3 nesta tabela de 2 itens, o Excel não encontra, e diz N/A (Not Available, ou Não Disponível)
3) Minha sugestão é que você não use o procv() ali, e sim o cont.se(), e ficaria assim a sua fórmula:

= SE ( A2 = base_lista! $A$3 ; "N" ; SE ( CONT.SE(base_lista! $B$5:$B$6;B2)<>0 ; "S" ; "N" ) )

É importante entender bem o que as funções fazem e sempre contornar seus resultados indesejados.
Assim deverá funcionar. Tenta lá.

 
Postado : 22/05/2013 2:11 pm
(@vic7or)
Posts: 94
Estimable Member
Topic starter
 

=SE(ÉCÉL.VAZIA(A2);"";SE(A2=base_lista!$A$3;"N";SEERRO(PROCV(B2;Cods!$B$4:$C$5;2;0);"N")))

Eu tinha colocado uma nova coluna com as condições de internação ou não.
Hahahahaha

Vocês vêem cada coisa que os usuários fazem por aqui, né!?

Hahahah

Eu entendi, Fernando e Reinaldo.
Faz todo o sentido.
É bom ter aprendido isso aqui.
To aprendendo EXCEL sozinho e na marra!
Estou muito grato à vocês.

Ambas as soluções funcionaram.
=)

Muito obrigado, gente!

 
Postado : 22/05/2013 3:27 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

AEEEE q ótimo !!
Mas não é sozinho não! Estamos aqui te ajudando! To me sentindo excluído agora! kkkkk

Q bom q vc ta aprendendo ! Estamos aqui e vamos ajudar sempre !

;-)

 
Postado : 22/05/2013 4:03 pm