Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Dúvidas sobre cálculos, funções simples e aninhadas, fórmulas matriciais, etc.
  • Avatar do usuário
  • Avatar do usuário
#62800
PESSOAL,

ESTOU FAZENDO UMA PLANILHA AONDE TRAGO UM ARQUIVO .CSV E NA MINHA PLANILHA BASE PRECISO DE UMA FÓRMULA QUE SOME DUAS LINHAS QUANDO HOUVER OS PROVENTOS 37 E 49, MAS NEM SEMPRE UM DESSES PROVENTOS VIRÁ NESSE ARQUIVO .CSV, COMO DEVO PROCEDER?
ANEXO PLANILHA COM AS EXPLICAÇÕES TAMBÉM.
Você não está autorizado a ver ou baixar esse anexo.
#62806
Estevaoba,
OK, mas se vier um arquivo .csv que contenha o provento 37 também ou seja foi incluso mais uma linha no exemplo que envie seria no .csv na linha 24 ele não está somando, pq digo isso, pq fui la na planilha que só contém o provento 49 e inclui uma linha abaixo e coloquei como provento 37 e os valores e não fez a soma.
#62817
Fiz agora com intervalos dinâmicos usando a função DESLOC.
Código: Selecionar todos
=SOMARPRODUTO(SOMASE(DESLOC('AVISO PRÉVIO INDENIZADO'!$A$1;CORRESP(" Provento";'AVISO PRÉVIO INDENIZADO'!$A$1:$A$1001;0);0;CORRESP("Total de Provento";'AVISO PRÉVIO INDENIZADO'!$A$1:$A$1001;0)-CORRESP(" Provento";'AVISO PRÉVIO INDENIZADO'!$A$1:$A$1001;0)-1;1);{37;49};DESLOC('AVISO PRÉVIO INDENIZADO'!$B$1;CORRESP(" Provento";'AVISO PRÉVIO INDENIZADO'!$A$1:$A$1001;0);CORRESP(BASE!$B9;'AVISO PRÉVIO INDENIZADO'!$C$19:$N$19;0);CORRESP("Total de Provento";'AVISO PRÉVIO INDENIZADO'!$A$1:$A$1001;0)-CORRESP(" Provento";'AVISO PRÉVIO INDENIZADO'!$A$1:$A$1001;0)-1;1)))
Mas para funcionar, é necessário que a estrutura da planilha seja consistente, conforme no seu exemplo.
No caso, a fórmula está limitando o intervalo de soma ao número de linhas entre as palavras Provento, na linha 19 e Total de Provento, na linha 25, ou seja, 4 linhas.
Notei que a palavra Provento, na linha 19 está precedida de um espaço (" Provento"), então uso exatamente esta grafia na fórmula.

Faça testes e nos dê um retorno se atende a sua necessidade.

Ab.
#62840
=SOMARPRODUTO(SOMASE(DESLOC('AVISO PRÉVIO INDENIZADO'!$A$1;CORRESP(" Provento";'AVISO PRÉVIO INDENIZADO'!$A$1:$A$1001;0);0;CORRESP("Total de Provento";'AVISO PRÉVIO INDENIZADO'!$A$1:$A$1001;0)-CORRESP(" Provento";'AVISO PRÉVIO INDENIZADO'!$A$1:$A$1001;0)-1;1);{37;49};DESLOC('AVISO PRÉVIO INDENIZADO'!$B$1;CORRESP(" Provento";'AVISO PRÉVIO INDENIZADO'!$A$1:$A$1001;0);CORRESP(BASE!$B9;'AVISO PRÉVIO INDENIZADO'!$C$19:$N$19;0);CORRESP("Total de Provento";'AVISO PRÉVIO INDENIZADO'!$A$1:$A$1001;0)-CORRESP(" Provento";'AVISO PRÉVIO INDENIZADO'!$A$1:$A$1001;0)-1;1)))

Combino SOMARPRODUTO & SOMASE para juntar o que seriam duas SOMASE,
uma para o critério 37 (SOMASE('AVISO PRÉVIO INDENIZADO'!$A$20:$A$23;37...)
e outra para o critério 49 (SOMASE('AVISO PRÉVIO INDENIZADO'!$A$20:$A$23;49...)
Por isso os dois critérios são usados entre chaves {37;49} e a SOMARPRODUTO soma os resultados para os dois critérios.

Como os intervalos não são fixos, uso a função DESLOC, tanto para o intervalo de critérios como para o de soma da função SOMASE.
Primeiro argumento da DESLOC para o intervalo de critérios: DESLOC('AVISO PRÉVIO INDENIZADO'!$A$1, onde A1 é apenas uma referência a partir da qual será alterado o intervalo para efetuar as somas.
No segundo argumento, CORRESP(" Provento";'AVISO PRÉVIO INDENIZADO'!$A$1:$A$1001;0), a função CORRESP determina em que linha deve iniciar o intervalo.
O terceiro argumento é zero porque não é necessário mudar de coluna, ou seja, o intervalo é na coluna A, a mesma coluna da célula de referência A1.
O quarto argumento determina a altura do intervalo, ou seja o número de linhas CORRESP("Total de Provento";'AVISO PRÉVIO INDENIZADO'!$A$1:$A$1001;0)-CORRESP(" Provento";'AVISO PRÉVIO INDENIZADO'!$A$1:$A$1001;0)-1
Ele é mais longo porque usa duas vezes a função CORRESP, a primeira determina a linha em que o intervalo deve terminar, ou seja, a linha com o texto "Total de provento" e deste valor eu subtraio o valor resultante da segunda CORRESP, que é a mesma usada no segundo intervalo da DESLOC. E no final, subtraio 1 para não incluir a linha com o texto "Total de provento".
O quinto e último argumento da DESLOC determina a largura do intervalo, ou seja 1, uma coluna.

A função DESLOC para o intervalo de soma segue o mesmo padrão, exceto no terceiro argumento, CORRESP(BASE!$B9;'AVISO PRÉVIO INDENIZADO'!$C$19:$N$19;0)
Como vamos somar mês a mês, precisamos mudar de coluna para cada mês buscado, então a função CORRESP determina a coluna do mês, conforme informado na coluna B da aba BASE.

A função DESLOC pode parecer complicada à primeira vista, mas não é. Basta um pouco de prática para dominá-la.
Espero ter contribuído para o seu entendimento.

Ab.
MarcilioLobao, SandroLima agradeceu por isso
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord