Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
Not applicable

Saldo Inicial - Fluxo de Caixa

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
EntradaSaídaSaldo Final
janeiro01005050
fevereiro50150100100
março100200100200
abril200150250

100

maio10020025050
Tags (1)
1 Solution

Accepted Solutions
Not applicable

Re: Saldo Inicial - Fluxo de Caixa

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.

9 Replies
Not applicable

Re: Saldo Inicial - Fluxo de Caixa

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.

Not applicable

Re: Saldo Inicial - Fluxo de Caixa

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?

Not applicable

Re: Saldo Inicial - Fluxo de Caixa

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.

Not applicable

Re: Saldo Inicial - Fluxo de Caixa

Eduardo, funcionou!

Muito obrigada!

Not applicable

Re: Saldo Inicial - Fluxo de Caixa

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

Not applicable

Re: Saldo Inicial - Fluxo de Caixa

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.

Not applicable

Re: Saldo Inicial - Fluxo de Caixa

Haaa entendiii...dahoraaaaa. Nossa para eu pensar em algo assim vou ter que estudar muito!!!! Valeuuu!!!!!

Not applicable

Re: Saldo Inicial - Fluxo de Caixa

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?Capturar2.PNG

paulovendruscol
Contributor

Re: Saldo Inicial - Fluxo de Caixa

Jackson,

A expressão disponibilizada pelo ecorrea não irá funcionar como você deseja. Para chegar no resultado esperado é necessário fazer a regra no script (load) ou verificar se a solução abaixo de stalwar1‌ te atende.


Dúvida Saldo como Conta Corrente