Imaginemos el siguiente caso:
Y queremos calcular el stock total que hay por días, siendo el primer día igual al del movimiento, de manera que quede de la siguiente forma:
Para hacer este cálculo vamos a necesitar una nueva función que modifique el contexto. Y esta es EARLIER. EARLIER devuelve el valor actual de la columna especificada en un paso de la evaluación exterior de la columna mencionada. Es decir, devuelve el valor justamente anterior de la columna exigida. Tiene la siguiente sintaxis: EARLIER(<column>, <number>) siendo
- <column>: Columna o expresion que se resuelve en una columna
- <num>: Número positivio apra el paso de la evaluación exterior. El siguiente nivel de evaluación exteriro se representa mediante 1; dos mediante el 2. Cuando se omite el valor predeterminado es 1
La función EARLIER requiere un contexto de fila anterior al principio del recorrido de tabla. De manera que nosotros no podemos poner =EARLIER(c,n) ya que el contexto de fila es la propia tabla. Para nuestro calculo, haríamos la siguiente formula.
=SUMX(
FILTER(Tabla,Tabla[Fecha]<=EARLIER(Tabla[Fecha]) && Tabla[Producto] = EARLIER(Tabla[Producto]) && Tabla[Talla] = EARLIER(Tabla[Talla]))
,Tabla[Movimiento Stock]
)
De manera que con esta imagen y los colores vamos a verlo mejor:
El circulo naranja le esta dando el contexto de evaluación.
Con FILTER le estamos estableciendo el contexto de fila que debe de coger. Ponemos las condiciones de Producto y de talla para que solo compare los que son igual en talla y producto (es decir, el producto A, con el producto A; la talla XL con la talla XL). Con el filtro de fecha le decimos que solo coja las filas cuya fecha sea menor o igual a la fila evaluada. Por último en rojo tenemos el campo a sumar dentro del SUMX (recordar que sumx es para agregados donde el contexto se cambia)
Nos vemos.
Sergio
Índice de contenidos
I. Evaluando el contexto en PowerPivot
II. SUMX. Operaciones de Agregacion dependientes del contexto
III. Funcion ALL, FILTER, CALCULATE
IV. Calculate a fondo
V. EARLIER
2 comments
EXISTE UNA FUNCION CONTRARIA A SUMX()? QUE EN VEZ DE SUMAR RESTE EL VALOR DE UNA CELDA AL POSTERIOR O ANTERIOR DE ESA MISMA COLUMNA.
DESEO OBTENER LA COLUMNA CALCULADA [DURACIÓN] , QUE SU VALOR SE OBTENGA DE RESTAR EL VALOR DE [MARCA TEMPORAL] AL VALOR POSTERIOR DE [MARCA TEMPORAL] DE LA MISMA PERSONA, TAL COMO MUESTRO EN EL EJEMPLO PARA LOS VALORES[DURACIÓN] DE JUAN[PERSONA]
https://drive.google.com/file/d/0B9wSBGPHzHWlVE9mSWNNLVRTakk/view?usp=sharing
https://drive.google.com/file/d/0B9wSBGPHzHWlMDVpVHJBekUzYjA/view?usp=sharing
[MARCA TEMP] [PERSONA] [SECCIÓN] [DURACIÓN] [FORMULA]
13/04/2016 5:44 PEPE PEDIDOS
13/04/2016 5:44 PACO TAR.VAR
13/04/2016 5:44 JUAN PEDIDOS 3:12:39 ( =A11-A4)
13/04/2016 5:44 LOLA PEDIDOS
13/04/2016 5:44 PEDRO REC
13/04/2016 5:44 SANDRA PEDIDOS
13/04/2016 5:44 MARIA PEDIDOS
13/04/2016 6:51 PEPE EXP
13/04/2016 7:54 PACO TIENDA
13/04/2016 8:57 JUAN INCI 2:00:51 (=A18-A11)
13/04/2016 9:59 LOLA TAR.VAR
13/04/2016 10:02 PEDRO TIENDA
13/04/2016 8:55 SANDRA REC
13/04/2016 8:57 MARIA REC
13/04/2016 9:49 PEPE TIENDA
13/04/2016 9:54 PACO PEDIDOS
13/04/2016 10:57 JUAN REC 0:08:00 (=A22-A18)
13/04/2016 10:59 LOLA PEDIDOS
13/04/2016 11:01 PEPE ALM.VERT
13/04/2016 11:03 PACO REC
13/04/2016 11:05 JUAN PEDIDOS 0:56:44 (=A29-A22)
13/04/2016 11:07 LOLA ALM.VERT
13/04/2016 11:08 PEDRO PEDIDOS
13/04/2016 11:11 SANDRA PEDIDOS
13/04/2016 12:03 MARIA SALIDA
13/04/2016 12:02 PEPE SALIDA
13/04/2016 12:02 PACO SALIDA
13/04/2016 12:02 JUAN SALIDA 12:02:37 (=A29)
13/04/2016 12:09 LOLA SALIDA
13/04/2016 12:02 PEDRO SALIDA
13/04/2016 12:02 SANDRA SALIDA
ESTIMADO SERGIO ESPERO ME PUEDAS AYUDAR CON ESTE ASUNTO.
DESEO OBTENER LA COLUMNA CALCULADA [DURACIÓN] , QUE SU VALOR SE OBTENGA DE RESTAR EL VALOR DE [MARCA TEMPORAL] AL VALOR POSTERIOR DE [MARCA TEMPORAL]
EXISTE UNA FUNCION CONTRARIA A SUMX()? QUE EN VEZ DE SUMAR RESTE EL VALOR DE UNA CELDA AL POSTERIOR O ANTERIOR DE ESA MISMA COLUMNA.
https://drive.google.com/file/d/0B9wSBGPHzHWlVE9mSWNNLVRTakk/view?usp=sharing
https://drive.google.com/file/d/0B9wSBGPHzHWlMDVpVHJBekUzYjA/view?usp=sharing
MIL GRACIAS DE ANTEMANO.
EDGAR