1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Excel - Instrução If

Discussão em 'Programação' iniciada por Madruga, 20 de Abril de 2008. (Respostas: 9; Visualizações: 2450)

  1. Madruga

    Madruga Power Member

    Boa noite, precisava de uma mãozinha :003:

    Tenho esta seguinte folha de calculo

    [​IMG]

    e o que pretendia saber fazer era, penso que seja com a instrução IF calcular o seguinte:

    na zona onde diz total, o valor calculado vai ser referente a percentagem do HR ca de baixo, ou seja, neste caso é 0,36(36%) logo vendo a tabela ao lado ele vai buscar o valor de 30% referente a tabela ao lado. O que queria fazer era o Seguinte, que o IF caLculasse qualquer valor referente ao HR, ou seja, por exemplo - o valor era 0,27 (27%), ele automaticamente fazia o somatório das vendas e multiplicava pelo 25%. A estrutura deve ser do genero . If < 10% = 0, entre 10 e 15% = soma de vendas * 0,60, entre 16% e 20% = 0,68, etc.. não consigo é contrui-la.

    EDIT: Ja converti o valor do HR nesta imagem para percentagem, n tenho a imagem actualizada
    Alguma ajuda? :p
     
    Última edição: 20 de Abril de 2008
  2. ciberg

    ciberg Moderador
    Staff Member

    se bem entendi precisas disto:

    =SE(HR<=10%;0;SE(HR<=15%;soma_das_vendas*0,6;SE(HR<=20;soma_das_vendas*0,68;SE(HR<=25;soma_das_vendas*0,76;SE(HR<=30;soma_das_vendas*0,85;soma_das_vendas*0,96)))))

    Em que HR é a célula em que está o HR

    Mas nesta situação seria melhor um PROCV.
     
  3. Madruga

    Madruga Power Member

    Se percebi, queres saber qual é a celula do HR? é o G21

    Nunca utilizei a função PROCV :(

    EDIT:
    sendo assim a formula ficava
    =SE(G21<=10%;0;SE(G21<=15%;E21*0,6;SE(G21 <=20;E21*0,68;SE(G21<=25;E21*0,76;SE(G21<=30;E21*0,85;E21*0,96)))))

    mas com este output, ele devolve sempre o valor o 2º valor desta condição, 15%..
     
    Última edição: 20 de Abril de 2008
  4. ciberg

    ciberg Moderador
    Staff Member

    Com procv ficaria assim:

    =PROCV(G21;I2:J7;2)*soma_das_vendas

    O I2:J7 corresponde à àrea da tabela onde fazes a correspondência.
    Para funcionar com valores menores que 10 na tabela onde fazes a correspondência tens que acrescentar uma linha com 0 ficando assim:

    0 0
    10% 0,6
    20% 0,68
    ......

    EDIT: vi agora o teu SE e falta o sinal de % do 3º SE para a frente, o correcto seria:
    =SE(G21<=10%;0;SE(G21<=15%;E21*0,6;SE(G21<=20%;E21*0,68;SE(G21<=25%;E21*0,76;SE(G21<=30%;E21*0,85;E21*0,96)))))
     
    Última edição: 20 de Abril de 2008
  5. Madruga

    Madruga Power Member

    Epa obrigadão :009:

    Consegui safar-me das 2 formas!

    Só um reparo: =PROCV(G21;J6:K10;2)*E21

    as celulas eram outras :D mas funcionou mesmo.

    Em relação ao do IF, foi mesmo mera distracção, deve ser do sono

    thanks :p
     
  6. ciberg

    ciberg Moderador
    Staff Member

    De nada, mais alguma dúvida diz.

    As células eram outras porque apenas tinha tentado adivinhar pela imagem que tinhas colocado.

    Em situações com mais do que 3 ou 4 SEs acho mais prático usar PROCV.
     
  7. KaLyPT

    KaLyPT Power Member

    Boas,

    Eu tenho uma duvida quanto a esta instrução.

    Numa folha de excel tenho dados retirados de ficheiros através do AS400 mas do mesmo formato.

    Tenho uma coluna com os nº de funcionário e outra com as férias de um respectivo mês. Nas duas seguintes tenho as férias do respectivo ano e outra com o numero de funcionário igual à primeira. Eu pretendo que se o numero da 1ªcoluna for igual à ultima os duas de férias sejam somados se não fique a zero.

    =IF(A1=D1;B1+C1;="0") o que acontece é que a função devolve SEMPRE, a não ser que coloque novamente o numero e à mão sem copys, o valor como falso. Isto é, "0".
    Já modifiquei à unha os formatos e devolve sempre o valor como false.

    Alguém me consegue dizer o que não estou a fazer ou como é que posso resolver isto?
     
  8. ciberg

    ciberg Moderador
    Staff Member

    Não precisas de colocar ="0" na fórmula, basta colocares 0.
    =IF(A1=D1;B1+C1;0)

    Quanto à condição devolver sempre falso verifica se as células de ambas as colunas (A e D) estão em formato númerico.
     
  9. jpaulino

    jpaulino Power Member

    Podes tentar desta forma também:

    =IF(--A1=--D1;B1+C1;0)

    ou, caso existam espaços em branco (muito comum quando se importam valores de aplicações):

    =IF(TRIM(A1)=TRIM(D1);B1+C1;0)


    Aproveitando este tópico, e para simplificar tantos IF's encadeados como foram mostrados nos exemplos iniciais, recomendo a utilização de VBA e criação de uma UDF. Exemplo: Excel: Criação de Fórmulas Personalizadas
     
  10. KaLyPT

    KaLyPT Power Member

    Boas,

    Não havia espaços e também tinha visto a formatação à unha. Para os espaços tinha usado o TRIM e a formatação fiz um a um. Desisti e encontrei a formula PRCV/VLOOKUP e ficou resolvido, no entanto surgiu o mesmo problema funcionava na primeira célula mas nas seguintes devolvia erro na formula. Fiz a formatação à unha e ficou na mesma com erro. Só ficou a funcionar aqueles que coloquei à mão e quando abri a pelica de erro e converti a célula (que já era formato numero) para numero.
    Confesso que estas coisas normalmente só acontece comigo eu devo ter um gostinho especial em complicar o que é simples e isso é contagia os PCs só pode.
     

Partilhar esta Página