Notifications
Clear all

Fórmula DESLOC empregada em caso prático.

12 Posts
2 Usuários
0 Reactions
2,006 Visualizações
(@pedro)
Posts: 362
Reputable Member
Topic starter
 

Boa tarde!

Pessoal, no arquivo em anexo eu fiz uma explicação do meu problema, mas posso lhes adiantar o seguinte:

Esta é uma planilha em que você já me ajudaram anteriormente elaborando esta função com DESLOC que me auxilia na interpretação do salário de um mês, em uma tabela auxiliar com três faixas percentuais conforme três faixas salariais.

ela sempre funciona quando eu tenho um "mês" como sendo a referência, mas em casos onde há por exemplo: "13º/anoX" ou "Aviso Prévio" (que é no ultimo mês, mas preciso nomear assim)... Nestes dois exemplos, que tem no anexo, e em outros casos semelhantes, a fórmula responde ao comando SEERRO que há no início, e desta forma ela puxa o percentual da célula de cima.

CASO o 13º fique em outra faixa salarial, deveria retornar o percentual apropriado, e não o mesmo do mês de dezembro.

O "erro" só ocorre nos casos em que o valor do 13º Salário ou Aviso Prévio fica muito diferente do mês de dezembro.
Tanto é que só percebi hoje, e não me dei conta se já passou por mim alguma planilha que estivesse errada antes.

Preciso da ajuda de vocês, porque eu não consigo imaginar uma lógica de como fazer esta função.

Desde já, muito obrigado.

Sds. Pedro Júnior

 
Postado : 26/06/2013 10:45 am
(@pedro)
Posts: 362
Reputable Member
Topic starter
 

Somente para atualizar que eu ainda estou tentando montar essa fórmula com diferentes lógicas, mudando os "ingredientes", e talz...

Mas ainda não consegui. De outras formas em diversas tentativas eu consegui resultados mais errados do que o atual.

Ô detalhesinho que ta me quebrando a cuca... -________________________-

Sds. Pedro Júnior

 
Postado : 27/06/2013 12:48 pm
(@pedro)
Posts: 362
Reputable Member
Topic starter
 

Puxa vida, ainda sem solução, este fim de semana tentei diversas lógicas, montei um mote de fórmulas diferentes com recursos que eu li na internet, mas o melhor que eu consegui foram outras fórmulas (a maioria ficou bem mais comprida nossa o0) mas que resultam da mesma forma que a atual.

Alguém tem alguma ideia?

Qualquer tipo de sugestão, eu corro atrás pra estudar...

No início, eu esperava resolver sem macro, mas se for o único recurso, vou ter que estudar, pois não sei utilizar macros muito bem, neste caso, alguém tem algum tutorial para indicar?
(de preferência algo gratuito ^^)

Mesmo assim, muito obrigado os que tentaram, ou estejam tentando ainda.

Sds. Pedro Júnior

 
Postado : 01/07/2013 6:51 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Pedro, creio que para o 13º, possa ser utilizado (por exemplo em B30):

B30=SEERRO(MÁXIMO(DESLOC('Tetos INSS'!$G$4;CORRESP(SE(ESQUERDA(INSS!B30;2)="13";INSS!B29;INSS!B30);'Tetos INSS'!$B$5:$B$188;0);0;1;13));C29)

em G30

G30="'Tetos INSS'!F"&CORRESP(INSS!B30;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(SE(ESQUERDA(INSS!B30;2)="13";INSS!B29;INSS!B30);'Tetos INSS'!$B$5:$B$158;0)+4)>0;INDIRETO("'Tetos INSS'!F"&CORRESP(SE(ESQUERDA(INSS!B30;2)="13";INSS!B29;INSS!B30);'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(SE(ESQUERDA(INSS!B30;2)="13";INSS!B29;INSS!B30);'Tetos INSS'!$B$5:$B$158;0)+4))))+2);G29)

(matricial).
Assim ao "deparar" com o conteúdo da célula = 13º/..., será utilizado mês da célula anterior, para ser "buscado".

Quanto ao aviso prévio, quando aparecer o que considerar como mês? o mês célula anterior ou posterior?

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/07/2013 7:28 am
(@pedro)
Posts: 362
Reputable Member
Topic starter
 

Reinaldo, primeiramente muito obrigado, não utilizei a sua formula exatamente como você descreveu, mas você que me deu a ideia pois eu não me lembrava da fórmula ESQUERDA, para os 13º/SALÁRIOS, eu tinha a seguinte formula originalmente:

{=SEERRO(AQUI NESTE PONTO, ANTES DO DESLOC, A IDEIA QUE SURGIU FOI A SEGUINTEDESLOC('Tetos INSS'!$E$4;CORRESP(INSS!B29;'Tetos INSS'!$B$5:$B$158;0);CORRESP(F29;SE('Tetos INSS'!$F$4:$R$4="de";SE(INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B29;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B29;'Tetos INSS'!$B$5:$B$158;0)+4)>0;INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B29;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B29;'Tetos INSS'!$B$5:$B$158;0)+4))))+2);G28)}

Se ESQUERDA ( B30 ; 2 ) = "13" , copiei toda a linha de código substituindo os INSS!B30 por INSS!B29... na continuação "senão" copiei a fórmula original...

Olha como ficou (grifei a edição em vermelho):

{=SEERRO(SE(ESQUERDA(B30;2)="13";DESLOC('Tetos INSS'!$E$4;CORRESP(INSS!B29;'Tetos INSS'!$B$5:$B$158;0);CORRESP(F30;SE('Tetos INSS'!$F$4:$R$4="de";SE(INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B29;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B29;'Tetos INSS'!$B$5:$B$158;0)+4)>0;INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B29;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B29;'Tetos INSS'!$B$5:$B$158;0)+4))))+2);DESLOC('Tetos INSS'!$E$4;CORRESP(INSS!B29;'Tetos INSS'!$B$5:$B$158;0);CORRESP(F29;SE('Tetos INSS'!$F$4:$R$4="de";SE(INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B29;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B29;'Tetos INSS'!$B$5:$B$158;0)+4)>0;INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B29;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B29;'Tetos INSS'!$B$5:$B$158;0)+4))))+2));G29)}

Mas, ainda segue o problema para "aviso prévio" e outras verbas com nomes diferentes...

Respondendo sua pergunta, quando tiver uma destas verbas com nome diferente eu preciso que ele utilize como base o ultimo mês válido, saca?

Até agora, muito obrigado...

Sds. Pedro Júnior

 
Postado : 01/07/2013 8:47 am
(@pedro)
Posts: 362
Reputable Member
Topic starter
 

SEGUE NOVO ARQUIVO COM AS ALTERAÇÕES, restando somente parte do problema...

Sds. Pedro Júnior

 
Postado : 01/07/2013 8:59 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Então experimenta :
Ao invés de:...Se(ESQUERDA(B30;2)="13";....
Use:...Se(ÉTEXTO(B63);...
Em G65=SEERRO(SE(ÉTEXTO(B65);DESLOC('Tetos INSS'!$E$4;CORRESP(INSS!B64;'Tetos INSS'!$B$5:$B$158;0);CORRESP(F65;SE('Tetos INSS'!$F$4:$R$4="de";SE(INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B64;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B64;'Tetos INSS'!$B$5:$B$158;0)+4)>0;INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B64;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B64;'Tetos INSS'!$B$5:$B$158;0)+4))))+2);DESLOC('Tetos INSS'!$E$4;CORRESP(INSS!B64;'Tetos INSS'!$B$5:$B$158;0);CORRESP(F64;SE('Tetos INSS'!$F$4:$R$4="de";SE(INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B64;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B64;'Tetos INSS'!$B$5:$B$158;0)+4)>0;INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B64;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B64;'Tetos INSS'!$B$5:$B$158;0)+4))))+2));G64)

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/07/2013 10:22 am
(@pedro)
Posts: 362
Reputable Member
Topic starter
 

Olha só Reinaldo, como eu preciso de uma fórmula única que eu possa utilizar na coluna inteira, então eu "emendei" essa sua nova lógica na fórmula e ela ficou assim:

{=SEERRO(
SE
(ESQUERDA(B21;2)="13";DESLOC('Tetos INSS'!$E$4;CORRESP(INSS!B20;'Tetos INSS'!$B$5:$B$158;0);CORRESP(F21;SE('Tetos INSS'!$F$4:$R$4="de";SE(INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B20;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B20;'Tetos INSS'!$B$5:$B$158;0)+4)>0;INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B20;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B20;'Tetos INSS'!$B$5:$B$158;0)+4))))+2);
SE
(ÉTEXTO(B21);DESLOC('Tetos INSS'!$E$4;CORRESP(INSS!B20;'Tetos INSS'!$B$5:$B$158;0);CORRESP(F21;SE('Tetos INSS'!$F$4:$R$4="de";SE(INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B20;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B20;'Tetos INSS'!$B$5:$B$158;0)+4)>0;INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B20;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B20;'Tetos INSS'!$B$5:$B$158;0)+4))))+2);

DESLOC('Tetos INSS'!$E$4;CORRESP(INSS!B21;'Tetos INSS'!$B$5:$B$158;0);CORRESP(F20;SE('Tetos INSS'!$F$4:$R$4="de";SE(INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B21;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B21;'Tetos INSS'!$B$5:$B$158;0)+4)>0;INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B21;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B21;'Tetos INSS'!$B$5:$B$158;0)+4))))+2)));G20)}

Ou seja, na linha 21, quando B21 for "13" ou "texto", ele vai buscar como referência o mês que estiver em B20 (o mês anterior), e se B21 não for "13" nem "texto" a fórmula segue funcionando normalmente... EM TEORIA BELEZA

MAS, eu devo ter cometido algum erro na sintaxe, não sei onde, li ela de cabo à rabo, reescrevi passo a passo mas ela continua retornando o percentual da célula de cima pras verbas com nome em textos diversos...

Será que tu enxerga algo que me escapou?

Sds. Pedro Júnior

 
Postado : 01/07/2013 1:22 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Creio que não é necessário a primeira parte da formula pois 13º/?? é entendido como texto também, assim somente a partir da segunda (Étexto...) já cobre as variaveis.
Mas se do modo que deixou está bom para ti, o importante é funcionar.(pelo menos na teoria, até o próximo entrave, se houver)

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/07/2013 1:32 pm
(@pedro)
Posts: 362
Reputable Member
Topic starter
 

haha, você é rápido no gatilho, eu me dei conta disso agora e vinha dizer que ía remover a primeira parte da lógica, a versão atual da fórmula é a seguinte:

{=SE(ÉTEXTO(B21);
DESLOC('Tetos INSS'!$E$4;CORRESP(INSS!B20;'Tetos INSS'!$B$5:$B$158;0);CORRESP(F21;SE('Tetos INSS'!$F$4:$R$4="de";SE(INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B20;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B20;'Tetos INSS'!$B$5:$B$158;0)+4)>0;INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B20;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B20;'Tetos INSS'!$B$5:$B$158;0)+4))))+2);

DESLOC('Tetos INSS'!$E$4;CORRESP(INSS!B21;'Tetos INSS'!$B$5:$B$158;0);CORRESP(F21;SE('Tetos INSS'!$F$4:$R$4="de";SE(INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B21;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B21;'Tetos INSS'!$B$5:$B$158;0)+4)>0;INDIRETO("'Tetos INSS'!F"&CORRESP(INSS!B21;'Tetos INSS'!$B$5:$B$158;0)+4&":R"&CORRESP(INSS!B21;'Tetos INSS'!$B$5:$B$158;0)+4))))+2))}

Mas, ainda não entendo porque não funciona pros nomes grandes... Será que é a formatação da célula? o0

Segue anexo o último arquivo que estou trabalhando em cima... (está mais fácil de trabalhar nele, tirei tudo que não precisava)

Sds. Pedro Júnior

 
Postado : 01/07/2013 1:39 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Porque na formulação está "buscando" a célula anterior, porem "Aviso Prévio" vem depois do 13º, então ao procurar anterior não vai achar tb.

Pode ser com uma coluna auxiliar? Veja no anexo

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 01/07/2013 4:56 pm
(@pedro)
Posts: 362
Reputable Member
Topic starter
 

Sim, perfeito, funcionou direitinho... Testei em vários casos e sempre resultou corretamente!

Mais uma vez, muito obrigado pela ajuda amigo Reinaldo!

Sds. Pedro Júnior

 
Postado : 02/07/2013 5:19 am