Défi de formule - différence par rapport à la dernière entrée - Puzzle

Table des matières

Le contexte

Il y a quelques semaines, j'avais une question intéressante d'un lecteur sur le suivi du gain ou de la perte de poids dans un tableau simple.

L'idée est de saisir un nouveau poids chaque jour et de calculer la différence par rapport à la veille. Lorsque chaque jour a une entrée, la formule est simple:

La différence doit être calculée avec une formule comme celle-ci, entrée dans D6 et copiée dans le tableau:

=IF(C6"",C6-C5,"")

Cependant, lorsqu'un ou plusieurs jours sont manqués, les choses tournent mal et le résultat calculé n'a pas de sens:

Non, vous n'avez pas gagné 157 livres en un jour

Le problème est que la formule utilise la cellule vide dans le calcul, qui est évaluée à zéro. Ce dont nous avons besoin, c'est d'un moyen de localiser et d'utiliser le dernier poids enregistré dans la colonne C.

Le défi

Quelle formule calculera une différence par rapport à la dernière entrée, même si des jours ont été sautés?

Résultat souhaité - différence avec la dernière entrée précédente

Hypothèses

  1. Une seule formule est saisie dans D6 et copiée vers le bas (c'est-à-dire la même formule dans toutes les cellules)
  2. La formule doit gérer une ou plusieurs entrées vides précédentes
  3. La suppression des entrées vides (lignes) n'est pas autorisée
  4. Aucune colonne d'assistance autorisée

Remarque: un chemin évident consiste à utiliser une formule IF imbriquée. Je découragerais cela, car il ne sera pas bien mis à l'échelle pour gérer un nombre inconnu d'entrées vierges consécutives.

Vous avez une solution? Laissez un commentaire avec votre formule proposée ci-dessous.

J'ai piraté une formule moi-même, et je partagerai ma solution après avoir donné aux lecteurs intelligents un peu de temps pour soumettre leurs propres formules.

Crédit supplémentaire

Vous cherchez plus de défi? Voici le même résultat, avec un format numérique personnalisé appliqué. Quel est le format des nombres? Indice: j'ai glissé ceci de Mike Alexander sur son blog Bacon Bits.

Réponse (cliquez pour développer)

Il y a de très bonnes solutions proposées ci-dessous, y compris une solution très compacte et élégante de Panagiotis Stathopoulos. Pour mémoire, je suis allé avec un LOOKUP et une gamme en expansion:

=IF(C6"",C6-LOOKUP(2,1/($C$5:C5""),$C$5:C5),"")

Les mécanismes de LOOKUP pour ce type de problème sont expliqués dans cet exemple.

Articles intéressants...