Bonjour,
Ce tuto est l' "inverse" du calcul du cumul ... https://forum.excel-pratique.com/astuces/google-sheets-calculer-un-cumul-avec-arrayformula-154884
Certains dispositifs comme les compteurs affichent une valeur cumulée. Le but ici est de retrouver l'écart entre 2 relevés.
Problème :
L'écart se calcule normalement comme suit :
=A2-A1
que l'on tire vers le bas.
Une telle formule est incompatible avec ARRAYFORMULA car elle induit une dépendance circulaire.
Principe :
Nous allons utiliser le principe du produit de 2 matrices, l'une carrée de taille (n,n) et l'autre de taille (n,1)
avec une matrice carrée composée de 1, -1 et 0 comme suit
pour une ligne donnée (ligne bleue prise pour exemple), on aura la diagonale égale à 1 (qui représente la valeur courante du relevé) et la valeur juste à gauche à -1 (qui représente la valeur relevé précédemment).
Solution :
La matrice se construira comme suit :
=arrayformula( -1*(ROW(A2:A)=TRANSPOSE(ROW(A2:A)+1)) + 1*(ROW(A2:A)=TRANSPOSE(ROW(A2:A))) )
On aura in fine pour les valeurs cumulées situées en B
=ARRAYFORMULA(IF( B2:B="" ; ; MMULT( -1*(ROW(B2:B)=TRANSPOSE(ROW(B2:B)+1)) + 1*(ROW(B2:B)=TRANSPOSE(ROW(B2:B))) ; IF(B2:B="";0;B2:B) ) ))