Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
juanma21
Contributor III
Contributor III

Como calcular venta del mes anterior

Hola Estimados Amigos,

Tengo un problema al calcular la venta del mes anterior, uso la siguiente formula pero no funciona:

=Sum({ $ <Fecha = {'>=$(=Date(FechaIniMesAnt))<=$(=Date(FechaFinMesAnt))'}, ANIO= >} Importe)

Espero su gran ayuda y de antemano muy agradecido.

Lo que intento hacer es lo siguiente:

Calculo Venta Mes Anterior1.png

que sale del calculo de: (venta del mes / venta del mes anterior) - 1

Calculo Venta Mes Anterior2.png

Y la selección va a ser varios meses.

1 Solution

Accepted Solutions
hector_munoz
Specialist
Specialist

Hola Juan Manuel,

Para el primer gráfico mira a ver si te vale esta expresión para el color de fondo:

If(If(If(Len(Before([Venta])) = 0, 0, Before([Venta])) = 0, 0, ([Venta] / If(Len(Before([Venta])) = 0, 0, Before([Venta]))) - 1) <= 0, Rgb(0, 255, 0), // Verde

   If(If(If(Len(Before([Venta])) = 0, 0, Before([Venta])) = 0, 0, ([Venta] / If(Len(Before([Venta])) = 0, 0, Before([Venta]))) - 1) <= 0.05, Rgb(255, 255, 0), // Amarillo

      If(If(If(Len(Before([Venta])) = 0, 0, Before([Venta])) = 0, 0, ([Venta] / If(Len(Before([Venta])) = 0, 0, Before([Venta]))) - 1) <= 0.1, Rgb(255, 128, 0), // Naranja

         Rgb(255, 0, 0)))) // Rojo

, donde:

  • [Venta] es la venta del período actual,
  • If(Len(Before([Venta])) = 0, 0, Before([Venta])) es la venta del período anterior para la misma combinación de valores de las dimensiones.

Saludos,

H

View solution in original post

12 Replies
alexis_garcia
Creator II
Creator II

Hola Juan Manuel,

Adjunto un ejemplo para que cuando seleccionas el campo Mes, te de el importe del mes actual y del mes anterior.

(El ejemplo está en la tabla "Cuadro Mensual")

En el script he añadido Num(Right('0' & Month(TempDate) * 1,2)) as Mes, para poder moverte entre las meses en formato numérico.

2 formas de expresiones:

Mes Actual-> Sum({<Mes={"$(=Max(Mes))"}>}Importe)

Mes Anterior-> Sum({$<Mes={'$(MesAn)'}>}Importe)

Variable MesAn = Num(month(addmonths(max(Fecha) ,- 1)))

Espero que te sea de ayuda.

Saludos.

juanma21
Contributor III
Contributor III
Author

Hola Alexis, gracias por la respuesta, lo que intento haces es lo siguiente:

Calculo Venta Mes Anterior1.png

que sale del calculo de: (venta del mes / venta del mes anterior) - 1

Calculo Venta Mes Anterior2.png

Y la selección va a ser varios meses.

gabriel_as
Contributor III
Contributor III

Yo lo manejo asi:

=SUM({<Año={'$(vAñoAnterior)'},Mes={'$(vMaxMes1A)'}>}Importe)

el detalle esta en que quieres el año del mes anterior y el propio mes anterior, de febrero a diciembre no hay problema, pero en enero el año del mes anterior no es el año actual.

Con esa formula tienes el importe del mes 1 Antes del actual  (vMaxMes1A), poniendo a jugar el año del mes anterior

En el panel de variables:

defines vAñoAnterior con la siguiente formula

= if(Month(AddMonths( max(DocDate),0)) -Month(AddMonths( max(DocDate),-1)) < 0, Year(AddYears( max(DocDate),-1)), Year(AddYears( max(DocDate),0)))

y defines vMaxMes1A con la siguiente formula

= Month(AddMonths(max(DocDate),-1))

donde DocDate es la fecha actual

Ahora si ya pudiste con el mes anterior tienes que definir vMaxMes2A, vMaxMes3A, vMaxMes4A, etc y en la formula cambias el -1 por -2, -3, -4, etc.

Espero haber sido claro.

Saludos

juanma21
Contributor III
Contributor III
Author

Hola Gabriel,

Muchas gracias por tu respuesta, estoy tratando de aplicarlo se me es un poco confuso. Por favor me ayudas a aplicarlo con un ejemplo. Gracias de antemano.

gabriel_as
Contributor III
Contributor III

Te quisiera poner un archivo qvw, de ejemplo, pero no se si tu sepas como insertarlo pues de las opciones que me muestra aquí el foro no viene el clip.

Creo que si primero creas las variable (en total son 13, 12 para los meses y 1 para el año anterior) y en el script creas un "calendario maestro" no te va a fallar. Insisto si sabes como te puedo subir un ejemplo lo hago con gusto o en su defecto dime como te lo hago llegar.

Hice un cambio en la variable vAñoAnterior, quedando

= if(month(max(DocDate)) < 6 , Year(AddYears( max(DocDate),-1)), Year(AddYears( max(DocDate),-0)))

Saludos,

juanma21
Contributor III
Contributor III
Author

Cuando pones responder vas a Utilizar el editor avanzado.

Y en la parte inferior ya esta el clip Adjuntar.

Saludos

JM

1.png

hector_munoz
Specialist
Specialist

Hola Juan Manuel,

Si no te he entendido mal y esto es lo que necesitas:

08-03-2017 22-03-29.png

, las expresiones que tendrías que crear serían:

  1. Venta: Sum(Venta)
  2. Vta Mes Ant: If(Len(Before([Venta])) = 0, 0, Before([Venta]))
  3. %: If([Vta Mes Ant] = 0, 0, ([Vta Mes Ant] / [Venta]) - 1)

Te adjunto una app.

Saludos,

H

gabriel_as
Contributor III
Contributor III

Que tal Hector, solo corrijo tu formula de incremento:

La formula es  (valor actual- valor anterior)/ valor anterior , que también seria (valor actual/valor anterior)-1 y tu lo estas manejando al revés por eso los negativos en los %

Saludos

juanma21
Contributor III
Contributor III
Author

Hola Hector, muchas gracias por la ayuda, intente aplicar tu formula pero no tengo el efecto esperado, tengo nivel tienda, sucursal y producto. La necesidad es ver en colores la variación de la venta.el cual el rango es el siguiente:

<=0 Verde

>0 y <=5 Amarillo

>5 y <=10 Naranja

>10 Rojo

Si vemos el Cuadro Mensual Tienda, Abril es mayor que Marzo y no debe ser color verde, lo mismo sucede en las otras tablas como sucursal y material.

Te adjunto mi qvw para que observes mejor el problema. En la expresión he puesto los valores de color.

venta.png