Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Somar celulas anteriores (above)

Ola,

tem alguma forma de somar, em determinada condição (linha) o valor contidos na celuluas imediatamente superiores a esta ?? Tentei utilizar a função above, mas não obtive sucesso

Seria algo assim

identificador
descricaovl_financeiro
1xxx100
2yyyy200
3total

300

4saldo anterior100
5saldo final400



Onde na linha 5 teria que totalizar a linha 4+3.

Tentei fazer desta forma: if(identificador= 5 , rangesum(above(sum(vl_financeiro_realizado ),1,2)),

                                      (sum(vl_financeiro_realizado ))

12 Replies
Not applicable
Author

Olá Marcos,

Alguém aqui da comunidade já me deu uma dica que é a seguinte. Eu utilizei assim e funcionou.
Você cria na sua tabela tres campos: anterior, atual, acumulado. E depois podes até deixar ocultos estes campos.
Utilizar somente para sua fórmula. Veja exemplo anexo.


E depois você soma sempre o valor do campo atual + o acumulado que serão os valores anteriores.

Abs,
Juliana.

Not applicable
Author

Oi Juliana,

Valeu pelo retorno.  Fazendo mais uns teste descobri que o problema ocorre quando mostro mais de uma dimensão (identificado e descricao), quando contraio deixando apenas uma (identificador), funciona, conforme a imagem abaixo. A pergunta (que não quer calar) é porque disto acontecer.

tela.jpg

Not applicable
Author

Marcos, e se tentares utilizar em fez do identificador = 5,

colocar Rowno() = 5 ?

cesaraccardi
Specialist
Specialist

Olá Marcos,

Sobre a sua pergunta, eu acredito que sei a resposta... Na sua fórmula você tem "identificador= 5 ", esta condição retorna verdadeiro quando você está no nível da dimensão identificador. Quando você faz o drill down para descricao, esta condição não mais retorna verdadeiro porque você precisa de uma agregação para comparar com o valor discreto "5". Experimente substituir a condição "identificador=5" para "Only(identificador) = 5", desta forma você terá somente o valor possível 5 uma vez e não várias vezes. Me perdoe se a explicação ficou meio confusa.

Abraços,
Cesar.

Not applicable
Author

Ola Cesar e Juliana,

    Primeiro tentei a opçao sugerida pela Juliana, sem sucesso, e agora tentei a do Cesar, mas o problema presiste .  Estou anexando o qvw caso alguem queira fazer alguma tentativa. Trabalho com a versao 10 e ate baixei a versão 11 para verificar se poderia ter alguma correção (se é que isto se configure em problema e não em inabilidade - rsrs ) mas tambem não rolou.

Not applicable
Author

Bom Dia Marcos,

Para entender o que esta acontecendo, insira uma nova expressão e coloque a função ROWNO() como retorno e desabilite a expressão "vl_financeiro".

Você verá que para cada linha sempre será retornado o valor "1".

Isso ocorre porque existem 2 dimensões no seu gráfico, se a segunda dimensão retornasse mais de uma linha existiria sim um registro anterior para ser acumulado.

Parece que a função ABOVE (funções inter-registros) se baseia na quantidade de registros da ultima dimensão do seu gráfico, ou seja, nunca vai existir a linha anterior para você acumular se estiver inserindo a segunda dimensão.

No caso que vc mencinou acima, utilizando a tabela dinamica quando vc expande para a segunda dimensão é quando esse fato ocorre.

Abraços

Not applicable
Author

Ola Eduardo, 

fiz conforme indicou e realmente, sem o dril down, o rowno fica sequencial, com o dril, fica tudo como citou, conforme a imagem abaixo;

tela.jpg

Mas e agora ? Qual seria a solução ? Ja escutei usuario umas "gracinhas", tipo -use o excel que resolverá o problema-. Teria alguma outra funcão para tratar esta situação ??

Not applicable
Author

Dependendo da situação, poderia concatenar as duas dimensões (Identificador e Descrição). Dessa forma haveria somente uma dimensão e a função above funcionaria como se precisa.

Not applicable
Author

Infelizmente tenho que deixar com o drill, pois a aplicação é uma mostragem de um fluxo de caixa, e o usuario necessita abrir em até 5 dimensões.

Mas muito estranho, a principio parece ser uma operação usual e imagino que deveria ter alguma função que atendesse a isto.

Bueno, vou deixar a questão em aberto pois talvez algum outro expert possa indicar algum caminho

Por enquanto, agradeço aos retornos que me enviaram.