![](https://cdn.wiki-base.com/7039766/formula_challenge_-_difference_from_last_entry_puzzle.png.webp)
Kontekst
Prije nekoliko tjedana imao sam zanimljivo pitanje čitatelja o praćenju debljanja ili gubitka u jednostavnoj tablici.
Ideja je unijeti novu težinu svaki dan i izračunati razliku u odnosu na prethodni dan. Kad svaki dan ima unos, formula je jednostavna:
Razlika se izračunava formulom poput ove, unosi se u D6 i kopira u tablicu:
=IF(C6"",C6-C5,"")
Međutim, kada se propusti jedan ili više dana, stvari pođu po zlu i izračunati rezultat nema smisla:
Ne, niste dobili 157 kilograma u jednom danu
Problem je što formula koristi praznu ćeliju u izračunu, koja se izračunava nulom. Ono što nam treba je način lociranja i korištenja posljednjeg pondera zabilježenog u stupcu C.
Izazov
Koja će formula izračunati razliku od zadnjeg unosa, čak i kad su dani preskočeni?
Željeni rezultat - razlika prema zadnjem prethodnom unosu
Pretpostavke
- Jedna formula unosi se u D6 i kopira prema dolje (tj. Ista formula u svim stanicama)
- Formula mora obrađivati jedan ili više prethodnih praznih unosa
- Uklanjanje praznih unosa (redaka) nije dopušteno
- Nije dopušten nijedan pomoćni stupac
Napomena: jedan očit put je uporaba formule Nested IF. To bih obeshrabrio, jer se neće dobro prilagođavati nepoznatom broju uzastopnih praznih unosa.
Imate rješenje? Ostavite komentar sa predloženom formulom u nastavku.
Sam sam hakirao formulu i podijelit ću svoje rješenje nakon što pametnim čitateljima dam vremena da predaju vlastite formule.
Dodatni kredit
Tražite li još izazova? Evo istog rezultata s primijenjenim prilagođenim formatom broja. Koji je format broja? Savjet: Prebrisao sam ovo od Mikea Alexandera na njegovom blogu Bacon Bits.
U nastavku se nalaze stvarno dobra predložena rješenja, uključujući vrlo kompaktno i elegantno rješenje Panagiotisa Stathopoulosa. Za zapisnik, odlučio sam se za LOOKUP i širi asortiman:
=IF(C6"",C6-LOOKUP(2,1/($C$5:C5""),$C$5:C5),"")
Mehanika LOOKUP-a za ovu vrstu problema objašnjena je u ovom primjeru.