
Kontext
Pred pár týždňami som mal od čitateľa zaujímavú otázku o sledovaní priberania alebo chudnutia v jednoduchej tabuľke.
Cieľom je zadať novú váhu každý deň a vypočítať rozdiel oproti predchádzajúcemu dňu. Ak má každý deň zadaný údaj, vzorec je jednoduchý:
Rozdiel sa vypočíta pomocou tohto vzorca, ktorý sa zadá do D6 a skopíruje sa do tabuľky:
=IF(C6"",C6-C5,"")
Ak však zmeškáte jeden alebo viac dní, situácia sa zhoršuje a vypočítaný výsledok nemá zmysel:
Nie, nepriberali ste 157 libier za jeden deň
Problém je v tom, že vzorec používa pri výpočte prázdnu bunku, ktorá sa vyhodnotí na nulu. Potrebujeme spôsob, ako nájsť a použiť poslednú hmotnosť zaznamenanú v stĺpci C.
Výzva
Aký vzorec vypočíta rozdiel od posledného záznamu, aj keď už boli dni preskočené?
Požadovaný výsledok - rozdiel oproti poslednému predchádzajúcemu záznamu
Domnienky
- Jeden vzorec je zadaný v D6 a skopírovaný nadol (tj. Rovnaký vzorec vo všetkých bunkách)
- Vzorec musí obsahovať jeden alebo viac predchádzajúcich prázdnych záznamov
- Odstraňovanie prázdnych položiek (riadkov) nie je povolené
- Nie sú povolené žiadne pomocné stĺpce
Poznámka: Jednou zrejmou cestou je použitie vzorca Vnorené IF. Odradil by som to, pretože to nebude mať mierku na to, aby sme zvládli neznámy počet po sebe nasledujúcich prázdnych záznamov.
Máte riešenie? Nižšie zanechajte komentár k navrhovanému vzorcu.
Sám som hackol vzorec a budem zdieľať svoje riešenie potom, čo dám inteligentným čitateľom nejaký čas na predloženie svojich vlastných vzorcov.
Kredit naviac
Hľadáte ďalšiu výzvu? Rovnaký výsledok je dosiahnutý pri použití vlastného formátu čísla. Aký je formát čísla? Tip: Toto som pretiahol od Mika Alexandra na jeho blogu Bacon Bits.
Nižšie uvádzame skutočne dobré navrhované riešenia vrátane veľmi kompaktného a elegantného riešenia od spoločnosti Panagiotis Stathopoulos. Pre zaujímavosť, šiel som s LOOKUPOM a rozširujúcim sa rozsahom:
=IF(C6"",C6-LOOKUP(2,1/($C$5:C5""),$C$5:C5),"")
V tomto príklade sú vysvetlené mechanizmy VYHĽADÁVANIA tohto druhu problému.