Criando agrupamento com função SE(), E() e função PROC()
Conceito:
Com o propósito de ver certos dados em tipos de agrupamentos que faz sentido para o negócio, em muitas situações o banco de dados da empresa já fornece esse agrupamento, em outros casos você precisa fazer isso “na mão”.
Situação:
Tenho uma tabela com tipo de produto e quantidade vendida. Quero classificar as quantidades de vendidas em 3 segmentos. O primeiro entre 1 e 1500, o segundo entre 1501 e 2000 e o terceiro maior ou igual a 2001.
Normalmente a maioria das pessoas fazem isso com a função SE(). Vou mostrar aqui uma opção com a função PROC() para o mesmo cenário.
Video:
[youtube https://www.youtube.com/watch?v=Vp2jzeaSO8E&w=854&h=510]
Aplicabilidade:
Veja abaixo a tabela criada. A primeira coluna com o produto, a segunda com a quantidade de vendas daquele produto, a terceira aplicando o agrupamento com a função SE() e a quarta aplicando o agrupamento com a função PROC().
Para que a função Se() atenda essa necessidade usaremos 3 funções, uma dentro da outra, esse tipo de situação chamamos de funções aninhadas (usamos uma função dentro da outra com a finalidade de responder ao argumento solicitado). Usaremos também a função E() para restringir entre quais valores se encontram o agrupamento 1, 2 e 3.
A função SE() responde, para um teste lógico, caso verdadeiro mostra o valor em [valor_se_verdadeiro] , caso a comparação do teste lógico seja falso ele mostra o valor em [valor_se_falso].
Vamos acompanhar o exemplo abaixo:
No argumento “teste lógico” estou comparando se o valor que está em A1 (o número 1) é maior que o valor que se encontra em B1 ( o número 2).
A função identifica que para a comparação 1 é maior que 2, o teste lógico retorna FALSO, logo a função SE mostrará o valor que se encontra em [valor se falso] neste caso “O valor é menor”.
Usando somente a função SE fico limitado em comparações do tipo a1>b1, a1>=b1, a1<b1, a1<=b1, a1=b1, ou situações do tipo a1+c1>b1+d1 e por aí vai, mas sempre uma valor comparado com outro.
Daí surge uma necessidade. Quero saber se o valor de uma determinada célula está entre um range de valores, tipo se 3 está entre 1 e 1500.
Veja abaixo como funciona a função E().
A tabela abaixo mostra 3 comparações:
-
- 3 está entre 1 e 1500 ? Sim (VERDADEIRO)
- 1501 está entre 1 e 1500 ? Não (FALSO)
- -3 está entre 1 e 1500 ? Não (FALSO)
A função funciona da seguinte forma:
-
- E (teste lógico1 ; teste lógico 2)
- E (3 é maior e igual a 1; 3 é menor e igual a 1500)
- E (VERDADEIRO; VERDADEIRO)
- E(VERDADEIRO)
Veja que a função retornará verdadeiro apenas para se todos os testes lógicos forem iguais a VERDADEIRO.
Usando SE() e E()
Como falei acima a função SE () funciona com uma comparação de um teste lógico, veja que o que responde esse argumento é uma outra função, neste caso a função E().
-
- SE(teste lógico; valor se verdadeiro; valor se falso)
- SE (E(lógico1;lógico2); valor se verdadeiro; valor se falso)
- SE (E (3>=1; 3<=1500); 1; FALSO)
- SE(E(VERDADEIRO;VERDADEIRO);1;FALSO)
- SE(VERDADEIRO;1;FALSO)
- Como a resposta para o argumento lógico é VERDADEIRO, o valor correspondente para [valor se verdadeiro] é 1.
- Veja que para a celula B3 o cenário não está dentro do apresentado, 1501 não está entre 1 e 1500 logo a resposta para a função SE() será FALSO.
Aninhando SE() 1 vez
Como a situação acima atende somente a um determinado range ( 1 a 1500) preciso que atenda agora ao range de 1501 a 2000.
Novamente a sintaxe do SE() – SE( teste lógico, se verdadeiro, se falso)
para o valor de 1501 a função acima retornaria falso, porque 1501 não está entre 1 e 1500 , logo utilizarei uma outra função Se() onde o argumento aparece como FALSO.
Ficará desta forma:
-
- SE( teste lógico, se verdadeiro, se falso)
- SE( teste lógico, se verdadeiro, SE( teste lógico, se verdadeiro, se falso)
- SE( E(logico1,logico2), se verdadeiro, SE( E(logico1,logico2), se verdadeiro, se falso))
- SE (E (1501>=1; 1501<=1500); 1; FALSO)
- SE (FALSO; 1; FALSO)
- SE(FALSO;1; SE (E (1501>=1501; 1501<=2000); 2; FALSO))
- SE(FALSO;1; SE (VERDADEIRO; 2; FALSO))
- Resposta 2
Aninhando SE() 2 vezes
Como a situação acima atende somente a um determinado range ( 1501 a 2000) preciso que atenda agora ao range de maior e igual a 2001.
Novamente a sintaxe do SE() – SE( teste lógico, se verdadeiro, se falso)
para o valor de 2001a função acima retornaria falso, porque 2001 não está entre 1501 e 2000, logo utilizarei uma outra função Se() onde o argumento aparece como FALSO.
Ficará desta forma:
-
- SE( teste lógico, se verdadeiro, se falso)
- SE( teste lógico, se verdadeiro, SE( teste lógico, se verdadeiro, se falso)
- SE( E(logico1,logico2), se verdadeiro, SE( E(logico1,logico2), se verdadeiro, SE( E(logico1,logico2), se verdadeiro, se falso)))
- SE (E (2001>=1; 1501<=1500); 1; FALSO)
- SE (FALSO; 1; FALSO)
- SE(FALSO;1; SE (E (2001>=1501; 1501<=2000); 2; FALSO))
- SE(FALSO;1; SE (FALSO; 2; FALSO))
- SE(FALSO;1; SE (FALSO; 2; SE (2001>=2001; 3; FALSO)))
- Resposta 3
Simplificando com a função PROC()
Para resolver essa situação com o PROC() criei uma tabela simples (a que está em G3:H5)
Entendendo a sintaxe do PROC() (usarei a primeira sintaxe):
-
- PROC (valor procurado; vetor procurado; vetor resultado)
- PROC( 1 ; G3:G5 ; H3:H5)
- PROC ( 1 ; 1/1501/2001 ; 1/2/3)
- PROC ( 1 ; 1 ; 1)
- A função trará o resultado do vetor resultado, neste caso 1.
Para baixar o arquivo com este exemplo, clique no botão “Baixar agora”.
Excelente !!! Muito obrigado pela força, minhas dúvidas foram muito bem esclarecidas.
olá preciso de uma ajuda
Olá Carlos, mande pra mim sua dúvida no contato@excelb2b.com
Obrigado amigo!
Conseguiu me ajudar bastante a formular uma planilha complexa aqui.
Legal Guilherme, que bom que ajudou.
Grande abraço.
Paulinho Lopes
ESTAVA COM UMA ENORME DIFICULDADE EM FINALIZAR UMA PLANILHA E GRAÇAS AO PAULINHO, FOI DE GRANDE VALIA SEUS CONHECIMENTOS.
OBRIGADO PELA AJUDA
ABRAÇO.
Em meio a um trabalho de pesquisa me deparei com um problema com uma tabela de resultados que foi rapidamente solucionado pelo Paulinho, obrigado pela ajuda!
Eu tenho uma dúvida. Preciso codificar uma coluna consoante as respostas das outras e transformar o somatório de palavras e números em números. Acho que seria algo do género: “SE((C3″0″)=0;(D3″0″)=0;(E3″1” e F3 “Baixa” e G3″Curta”)=1;(E3″1″ e F3″Baixa” e G3″Longa”)=2;(E3″1″ e F3″Alta” e G3″Curta”)=2;(E3″2″ e F3″Baixa” e G3″Curta”)=2;(E3″1″ e F3″Alta” e G3″Longa”)=3;(E3″2″ e F3″Baixa” e G3″Longa”)=3;(E3″2″ e F3″Alta” e G3″Longa”)=3;(E3″<2" e F3"Baixa" e G3"Curta")=3;(E3"<2" e F3"Baixa" e G3"Longa")=3;(E3"<2" e F3"Alta" e G3"Curta")=3;(E3"<2" e F3"Alta" e G3"Longa")=3)"
Será que alguém me poderia ajudar?
Olá!! Preciso de uma ajuda numa planilha com links. Alguém pode me ajudar
Coloque o que precisa aqui no seu poste e encaminhe um email para prlopes21@gmail.com
Estava com uma demanda no trabalho relacionada a uma planilha de vendas, e o Paulinho me ajudou. Muito obrigado prezado, que possam existir no mundo mais pessoas que queiram compartilhar conhecimento.
Consultei esse link para criar uma pontuação única para uma tabela com índices. Criei o critério para os valores entre e a explicação aqui foi fundamental para eu criar a lógica da função. Obrigada.