Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik Connect 2026 Agenda Now Available: Explore Sessions
cancel
Showing results for 
Search instead for 
Did you mean: 
carlossantos
Contributor
Contributor

Filtro Condficional Mes e Ano

Bom dia Pessoal estou com um caso no qual preciso aplicar uma regra e gostaria do apoio de vocês para aplicar a mesma. 

A regra é calculo de EBIT em determinado tempo. 

Que funciona da seguinte forma: 

Se o usúario selecionar o ano atual: trazer último mês fechado, exemplo: estamos em agosto de 2025, trazer os dados de agosto/24 a jul/25.

Se selecionar o ano e algum mês: pegar o mês selecionado e voltar 11 meses

Se selecionar o ano fechado: pegar o ano fechado, ou seja, janeiro a dezembro.

Eu fiz da seguinte forma:

AnoMes = {">=$(=vUlt12Meses)<=$(=vMaxMesAno)"}
Onde:

vUlt12Meses= =Year(AddMonths(Max(Data),-11))&Num(Month(AddMonths(Max(Data),-11)),'00')

vMaxMesAno= =Year(Max(Data))&Num(Month(Max(Data)),'00')

Isso conseguiu servir para as duas últimas regras, mas a do ano atual eu não consegui, poderiam me ajudar? Como posso resolver isso? Fazendo um IF e chamando alguma expressão, ou da pra fazer via variavel? 

 

2 Solutions

Accepted Solutions
robert_mika
Master III
Master III

My translation maybe not accurate but try like this:

variable:

vIsCurrentYear = If(Max(Year(Data)) = Year(Today()), 1, 0)

then espression

AnoMes = {
">= $(=If(vIsCurrentYear = 1,
Year(AddMonths(Today(), -13)) & Num(Month(AddMonths(Today(), -13)), '00'),
Year(AddMonths(Max(Data), -11)) & Num(Month(AddMonths(Max(Data), -11)), '00')
))
<= $(=If(vIsCurrentYear = 1,
Year(AddMonths(Today(), -1)) & Num(Month(AddMonths(Today(), -1)), '00'),
Year(Max(Data)) & Num(Month(Max(Data)), '00')
))"
}

 

View solution in original post

carlossantos
Contributor
Contributor
Author

Olá Robert, Bom dia! Essa não funcionou para a regra solicitada, Segue a regra que funcioonou...

vAnoMesMin =

=If( // 1) Ano e Mês selecionados apenas voltar 11 meses
GetSelectedCount(Ano)=1 and GetSelectedCount(Mês)=1,
Year(AddMonths(MonthStart(Max(Data)),-11)) & Num(Month(AddMonths(MonthStart(Max(Data)),-11)),'00'),

// 2) Só Ano selecionado e é ano fechado (antes do atual) pegar o primeiro mes que sempres será janeiro
If(GetSelectedCount(Ano)=1 and Max(Ano) < Year(Today()),
Max(Ano) & '01',

// 3) Só Ano selecionado e é o ano atual -> últimos 12 meses fechados (até mês anterior)
If(GetSelectedCount(Ano)=1 and Max(Ano)=Year(Today()),
Year(AddMonths(Max(Data),-12)) & Num(Month(AddMonths(Max(Data),-12)),'00'),

// 4) Sem nenhuma seleção específica voltar últimos 12 meses fechados
Year(AddMonths(Max(Data),-12)) & Num(Month(AddMonths(Max(Data),-12)),'00')
)
)
)

 

vAnoMesMax =

=If( // 1) Ano e Mês selecionados -> o próprio AnoMes selecionado
GetSelectedCount(Ano)=1 and GetSelectedCount(Mês)=1,
Year(MonthStart(Max(Data))) & Num(Month(MonthStart(Max(Data))),'00'),

// 2) Só Ano selecionado e é ano fechado (antes do atual) -> Dez desse ano
If(GetSelectedCount(Ano)=1 and Max(Ano) < Year(Today()),
Max(Ano) & '12',

// 3) Só Ano selecionado e é o ano atual -> último mês FECHADO (mês anterior)
If(GetSelectedCount(Ano)=1 and Max(Ano)=Year(Today()),
Year(AddMonths(Max(Data),-1)) & Num(Month(AddMonths(Max(Data),-1)),'00'),

// 4) Sem seleção específica -> mês atual dos dados
Year(Max(Data)) & Num(Month(Max(Data)),'00')
)
)
)

 

Na medida:  AnoMes = {">=$(vAnoMesMin)<=$(=vAnoMesMax)"}

View solution in original post

2 Replies
robert_mika
Master III
Master III

My translation maybe not accurate but try like this:

variable:

vIsCurrentYear = If(Max(Year(Data)) = Year(Today()), 1, 0)

then espression

AnoMes = {
">= $(=If(vIsCurrentYear = 1,
Year(AddMonths(Today(), -13)) & Num(Month(AddMonths(Today(), -13)), '00'),
Year(AddMonths(Max(Data), -11)) & Num(Month(AddMonths(Max(Data), -11)), '00')
))
<= $(=If(vIsCurrentYear = 1,
Year(AddMonths(Today(), -1)) & Num(Month(AddMonths(Today(), -1)), '00'),
Year(Max(Data)) & Num(Month(Max(Data)), '00')
))"
}

 

carlossantos
Contributor
Contributor
Author

Olá Robert, Bom dia! Essa não funcionou para a regra solicitada, Segue a regra que funcioonou...

vAnoMesMin =

=If( // 1) Ano e Mês selecionados apenas voltar 11 meses
GetSelectedCount(Ano)=1 and GetSelectedCount(Mês)=1,
Year(AddMonths(MonthStart(Max(Data)),-11)) & Num(Month(AddMonths(MonthStart(Max(Data)),-11)),'00'),

// 2) Só Ano selecionado e é ano fechado (antes do atual) pegar o primeiro mes que sempres será janeiro
If(GetSelectedCount(Ano)=1 and Max(Ano) < Year(Today()),
Max(Ano) & '01',

// 3) Só Ano selecionado e é o ano atual -> últimos 12 meses fechados (até mês anterior)
If(GetSelectedCount(Ano)=1 and Max(Ano)=Year(Today()),
Year(AddMonths(Max(Data),-12)) & Num(Month(AddMonths(Max(Data),-12)),'00'),

// 4) Sem nenhuma seleção específica voltar últimos 12 meses fechados
Year(AddMonths(Max(Data),-12)) & Num(Month(AddMonths(Max(Data),-12)),'00')
)
)
)

 

vAnoMesMax =

=If( // 1) Ano e Mês selecionados -> o próprio AnoMes selecionado
GetSelectedCount(Ano)=1 and GetSelectedCount(Mês)=1,
Year(MonthStart(Max(Data))) & Num(Month(MonthStart(Max(Data))),'00'),

// 2) Só Ano selecionado e é ano fechado (antes do atual) -> Dez desse ano
If(GetSelectedCount(Ano)=1 and Max(Ano) < Year(Today()),
Max(Ano) & '12',

// 3) Só Ano selecionado e é o ano atual -> último mês FECHADO (mês anterior)
If(GetSelectedCount(Ano)=1 and Max(Ano)=Year(Today()),
Year(AddMonths(Max(Data),-1)) & Num(Month(AddMonths(Max(Data),-1)),'00'),

// 4) Sem seleção específica -> mês atual dos dados
Year(Max(Data)) & Num(Month(Max(Data)),'00')
)
)
)

 

Na medida:  AnoMes = {">=$(vAnoMesMin)<=$(=vAnoMesMax)"}