Criando agrupamento com função SE(), E() e função PROC()

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().

funcao Se e funcao PROC 01

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.

funcao Se e funcao PROC 02

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].

funcao Se e funcao PROC 03

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).

funcao Se e funcao PROC 04

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”.

funcao Se e funcao PROC 05

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().

funcao Se e funcao PROC 07

A tabela abaixo mostra 3 comparações:

    1. 3 está entre 1 e 1500 ? Sim (VERDADEIRO)
    2. 1501 está entre 1 e 1500 ? Não (FALSO)
    3. -3 está entre 1 e 1500 ? Não (FALSO)

A função funciona da seguinte forma:

    1. E (teste lógico1 ; teste lógico 2)
    2. E (3 é maior e igual a 1; 3 é menor e igual a 1500)
    3. E (VERDADEIRO; VERDADEIRO)
    4. E(VERDADEIRO)

Veja que a função retornará verdadeiro apenas para se todos os testes lógicos forem iguais a VERDADEIRO.

funcao Se e funcao PROC 06

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().

    1. SE(teste lógico; valor se verdadeiro; valor se falso)
    2. SE (E(lógico1;lógico2); valor se verdadeiro; valor se falso)
    3. SE (E (3>=1; 3<=1500); 1; FALSO)
    4. SE(E(VERDADEIRO;VERDADEIRO);1;FALSO)
    5. SE(VERDADEIRO;1;FALSO)
    6. Como a resposta para o argumento lógico é VERDADEIRO, o valor correspondente para [valor se verdadeiro] é 1.
    7. 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.

funcao Se e funcao PROC 08

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:

    1. SE( teste lógico, se verdadeiro, se falso)
    2. SE( teste lógico, se verdadeiro, SE( teste lógico, se verdadeiro, se falso)
    3. SE( E(logico1,logico2), se verdadeiro, SE( E(logico1,logico2), se verdadeiro, se falso))
    4. SE (E (1501>=1; 1501<=1500); 1; FALSO)
    5. SE (FALSO; 1; FALSO)
    6. SE(FALSO;1; SE (E (1501>=1501; 1501<=2000); 2; FALSO))
    7. SE(FALSO;1; SE (VERDADEIRO; 2; FALSO))
    8. Resposta 2

funcao Se e funcao PROC 09

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:

    1. SE( teste lógico, se verdadeiro, se falso)
    2. SE( teste lógico, se verdadeiro, SE( teste lógico, se verdadeiro, se falso)
    3. SE( E(logico1,logico2), se verdadeiro, SE( E(logico1,logico2), se verdadeiro, SE( E(logico1,logico2), se verdadeiro, se falso)))
    4. SE (E (2001>=1; 1501<=1500); 1; FALSO)
    5. SE (FALSO; 1; FALSO)
    6. SE(FALSO;1; SE (E (2001>=1501; 1501<=2000); 2; FALSO))
    7. SE(FALSO;1; SE (FALSO; 2; FALSO))
    8. SE(FALSO;1; SE (FALSO; 2; SE (2001>=2001; 3; FALSO)))
    9. Resposta 3

funcao Se e funcao PROC 10

Simplificando com a função PROC()

Para resolver essa situação com o PROC() criei uma tabela simples (a que está em G3:H5)

funcao Se e funcao PROC 11

Entendendo a sintaxe do PROC() (usarei a primeira sintaxe):

funcao Se e funcao PROC 13

    1. PROC (valor procurado; vetor procurado; vetor resultado)
    2. PROC( 1 ; G3:G5 ; H3:H5)
    3. PROC ( 1 ; 1/1501/2001 ; 1/2/3)
    4. PROC ( 1 ; 1 ; 1)
    5. A função trará o resultado do vetor resultado, neste caso 1.

funcao Se e funcao PROC 12

Para baixar o arquivo com este exemplo, clique no botão “Baixar agora”.

baixar-agora