Provocarea formulelor - diferență față de ultima intrare - Puzzle

Cuprins

Contextul

Acum câteva săptămâni, am avut o întrebare interesantă de la un cititor despre urmărirea creșterii sau pierderii în greutate într-un tabel simplu.

Ideea este să introduceți o nouă greutate în fiecare zi și să calculați diferența față de ziua precedentă. Când fiecare zi are o intrare, formula este simplă:

Diferența se calculează cu o formulă ca aceasta, introdusă în D6 și copiată tabelul:

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

Cu toate acestea, atunci când una sau mai multe zile sunt ratate, lucrurile se strică, iar rezultatul calculat nu are sens:

Nu, nu ai câștigat 157 de lire sterline într-o singură zi

Problema este că formula folosește celula goală în calcul, care se evaluează la zero. Avem nevoie de o modalitate de localizare și utilizare a ultimei greutăți înregistrate în coloana C.

Provocarea

Ce formulă va calcula o diferență față de ultima intrare, chiar și când s-au omis zile?

Rezultatul dorit - diferență utilizând ultima intrare anterioară

Ipoteze

  1. O singură formulă este introdusă în D6 și copiată (adică aceeași formulă în toate celulele)
  2. Formula trebuie să gestioneze una sau mai multe intrări goale anterioare
  3. Eliminarea intrărilor goale (rânduri) nu este permisă
  4. Nu sunt permise coloane de ajutor

Notă: o cale evidentă este utilizarea unei formule IF imbricate. Aș descuraja acest lucru, deoarece nu va scara bine pentru a gestiona un număr necunoscut de intrări goale consecutive.

Ai o soluție? Lasă un comentariu cu formula propusă mai jos.

Am piratat împreună o formulă și voi împărtăși soluția mea după ce voi da cititorilor inteligenți de ceva timp să-și prezinte propriile formule.

Credit suplimentar

Căutați mai multe provocări? Iată același rezultat, cu un format de număr personalizat aplicat. Care este formatul numerelor? Sugestie: Am șters acest lucru de la Mike Alexander pe blogul său Bacon Bits.

Răspundeți (faceți clic pentru a extinde)

Există soluții foarte bune propuse mai jos, inclusiv o soluție foarte compactă și elegantă de la Panagiotis Stathopoulos. Pentru înregistrare, am mers cu o căutare și o gamă extinsă:

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

Mecanica căutării pentru acest tip de problemă este explicată în acest exemplu.

Articole interesante...