viernes, 28 de octubre de 2022

Diferencia con previo distinto de cero

Hoy un poco de formulación Excel que nos permitirá calcular la diferencia con la fila anterior que sea distinto de cero!!, esto es, solo trabajando con las filas con datos...
Diferencia con previo distinto de cero
Emplearemos algunas de las últimas funciones lanzadas por Microsoft como EXCLUIR o APILARV, junto a las ya clásicas LET o SCAN.
En primer lugar la fórmula (siempre mejorable):
=INDICE(LET(acum;SCAN(0;[Importes];LAMBDA(ac;fila;SI(fila<>0;fila;ac)));
acum_1;EXCLUIR(acum;1);
APILARV(0;EXCLUIR(acum_1-acum;-1)));FILA()-FILA(TblDATOS[#Encabezados]))


En este caso me baso en la idea de reemplazar los elementos de valor cero por el último dato con valor diferente de cero, obteniendo un vector de importes como el siguiente, lo que conseguimos con ayuda de la función SCAN:
SCAN(0;TblDATOS[Importes];LAMBDA(ac;fila;SI(fila<>0;fila;ac)))
Diferencia con previo distinto de cero

Seguidamente, a partir del vector anterior, y con el objetivo de poder restar el dato actual menos el previo, en lugar de usar complejos algortimos, emplearemos la función EXLCLUIR para quitar el primer elemento, y 'correr' el inicio del vector una posición...
=EXCLUIR(G3#;1)
donde G3# es el vector anterior
Diferencia con previo distinto de cero


Completaremos el elemento 'excluido' añadiendo al final del proceso un dato cero con la función APILARV... pero antes, ya podemos restar elemento a elemento ambos vectores.
Diferencia con previo distinto de cero

Ya tenemos casi el resultado... solo falta reubicar posiciones del resultado, lo que conseguimos quitando el último elemento del vector conseguido (que retornaba #N/D) e incorporando un cero en la primera posición (ya que no hay diferencia respecto de nada para el primer elemento):
APILARV(0;EXCLUIR(acum_1-acum;-1))


Para poder incluirlo dentro del campo formulado de nuestra tabla lo maquetamos en el contexto de la función INDICE, tal como se veía en la fórmula del inicio...
Listo. Tenemos nuestra diferencia con el previo distinto de cero.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.