Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde!
Estou com um problema que não consigo resolver, imagino que seja algo simples.
Preciso criar uma tabela dinâmica que calcule o saldo inicial, no caso, que comece o mês de janeiro com 0 e pros meses subsequentes ele adote o valor do saldo final como inicial e o saldo final seja a soma do (saldo inicial + entrada) - saída, como está no exemplo da tabela abaixo:
Mês | Saldo Inicial | Entrada | Saída | Saldo Final |
---|---|---|---|---|
janeiro | 0 | 100 | 50 | 50 |
fevereiro | 50 | 150 | 100 | 100 |
março | 100 | 200 | 100 | 200 |
abril | 200 | 150 | 250 | 100 |
maio | 100 | 200 | 250 | 50 |
Boa Tarde,
Você pode fazer da seguinte maneira:
Supondo que os unicos valores que são retornados da sua tabela sejam os valores de "Entrada" e "Saida", deve-se criar uma fórmula "Saldo Inicial" em que seja calculado o valor do saldo final da linha anterior (Entrada - Saida)
IF(ISNULL(ABOVE(RANGESUM(SUM(ENTRADA - SAIDA), ABOVE(SUM(ENTRADA - SAIDA), 1, ROWNO())), 1, ROWNO())) = -1, 0,
ABOVE(RANGESUM(SUM(ENTRADA - SAIDA), ABOVE(SUM(ENTRADA - SAIDA), 1, ROWNO())), 1, ROWNO()) )
A fórmula abaixo calcula o valor acumulado das expressões Entrada "SUM(Entrada-Saida)".
RANGESUM(SUM(ENTRADA - SAIDA), ABOVE(SUM(ENTRADA - SAIDA), 1, ROWNO()))
A utilização da função ABOVE é retornar valores de linhas anteriores (funções inter-registros de gráficos).
desta forma você consegue recuperar o valor do "Saldo Final" da linha anterior.
Para calcular o valor do saldo final, basta fazer uma simples expressão utilizando os nomes das suas expressões:
[Saldo Inicial] + [Entrada] - [Saida]
Segue um exemplo.
Boa Tarde,
Você pode fazer da seguinte maneira:
Supondo que os unicos valores que são retornados da sua tabela sejam os valores de "Entrada" e "Saida", deve-se criar uma fórmula "Saldo Inicial" em que seja calculado o valor do saldo final da linha anterior (Entrada - Saida)
IF(ISNULL(ABOVE(RANGESUM(SUM(ENTRADA - SAIDA), ABOVE(SUM(ENTRADA - SAIDA), 1, ROWNO())), 1, ROWNO())) = -1, 0,
ABOVE(RANGESUM(SUM(ENTRADA - SAIDA), ABOVE(SUM(ENTRADA - SAIDA), 1, ROWNO())), 1, ROWNO()) )
A fórmula abaixo calcula o valor acumulado das expressões Entrada "SUM(Entrada-Saida)".
RANGESUM(SUM(ENTRADA - SAIDA), ABOVE(SUM(ENTRADA - SAIDA), 1, ROWNO()))
A utilização da função ABOVE é retornar valores de linhas anteriores (funções inter-registros de gráficos).
desta forma você consegue recuperar o valor do "Saldo Final" da linha anterior.
Para calcular o valor do saldo final, basta fazer uma simples expressão utilizando os nomes das suas expressões:
[Saldo Inicial] + [Entrada] - [Saida]
Segue um exemplo.
Eduardo, é isso mesmo, obrigada!
O meu único problema agora é que eu uso um set analysis para definir o que é entrada e saída
SUM({$< Tipo = {"Recebíveis"} >}Valor)
Tem algum objeção por isso?
Seria basicamente trocar:
SUM(ENTRADA - SAIDA)
por
SUM({$< Tipo = {"Recebíveis"} >}Valor) - SUM({$< Tipo = {"Saidas"} >}Valor)
Onde o segundo SUM(), deve ser a sua expressão do tipo de SAIDA.
Eduardo, funcionou!
Muito obrigada!
Eduardo, eu não consegui entender o motivo de colocar o 1 e o ROWNO() no RANGESUM, qual seria a funcionalidade desses 2 parametros? Pois fazendo um teste de mesa aqui ficaria assim para o mês de fevereiro
ABOVE(RANGESUM(SUM(ENTRADA 150 - 100 SAIDA), ABOVE(SUM(ENTRADA 100 - 50SAIDA), 1, 1ROWNO())), 1, ROWNO())
ABOVE(RANGESUM(50,50,1,1)) = 102.
IF(ISNULL(ABOVE(RANGESUM(SUM(ENTRADA - SAIDA), ABOVE(SUM(ENTRADA - SAIDA), 1, ROWNO())), 1, ROWNO())) = -1, 0,
ABOVE(RANGESUM(SUM(ENTRADA - SAIDA), ABOVE(SUM(ENTRADA - SAIDA), 1, ROWNO())), 1, ROWNO()) )
Issosorio,
Estes parâmetros são da função "ABOVE".
Sintaxe:
ABOVE([ total ] expressão [ , deslocamento [,n ]])
Onde:
- "deslocamento": refere-se a qual linha será realizado o cálculo, no exemplo citado começa sempre na primeira linha ("1");
- "n": Significa a quantidade de vezes que esta operação será executada, como a expressão é avaliada a cada registro, quando estiver na segunda linha (rowno = 2), ele executará duas vezes afim de ir acumulando os valores.
A função RangeSum serve justamente para somar "n" vezes que a função ABOVE será executada.
No seu exemplo, a função RangeSum(50, 50,1,1) soma os valores 50 + 50 + 1 + 1.
Haaa entendiii...dahoraaaaa. Nossa para eu pensar em algo assim vou ter que estudar muito!!!! Valeuuu!!!!!
Olá estava com o mesmo problema da Ingrid e resolvi dessa forma que explicou Eduardo, porem se selecionar um mês como Março ele não traz o saldo de Fevereiro como inicial, este é meu problema, como posso resolver?