
Kontext
Před pár týdny jsem měl od čtenáře zajímavou otázku o sledování přírůstku nebo úbytku hmotnosti v jednoduché tabulce.
Myšlenkou je každý den zadat novou váhu a vypočítat rozdíl oproti předchozímu dni. Když má každý den záznam, vzorec je přímočarý:
Rozdíl se vypočítá pomocí vzorce, jako je tento, zadaného v D6 a zkopírovaného do tabulky:
=IF(C6"",C6-C5,"")
Když se však zmešká jeden nebo více dní, situace se zhoršuje a vypočítaný výsledek nedává smysl:
Ne, nezískali jste 157 liber za jeden den
Problém je v tom, že vzorec používá ve výpočtu prázdnou buňku, která se vyhodnotí na nulu. Potřebujeme způsob, jak vyhledat a použít poslední hmotnost zaznamenanou ve sloupci C.
Výzva
Jaký vzorec vypočítá rozdíl oproti poslední položce, i když byly dny vynechány?
Požadovaný výsledek - rozdíl při použití posledního předchozího záznamu
Předpoklady
- Jeden vzorec je zadán v D6 a zkopírován dolů (tj. Stejný vzorec ve všech buňkách)
- Vzorec musí zpracovat jednu nebo více předchozích prázdných položek
- Odebírání prázdných položek (řádků) není povoleno
- Nejsou povoleny žádné pomocné sloupce
Poznámka: Jedna zřejmá cesta je použít vzorec vnořeného IF. Odradil bych to, protože nebude dobře fungovat, aby zvládl neznámý počet po sobě jdoucích prázdných záznamů.
Máte řešení? Níže zadejte komentář k navrhovanému vzorci.
Sám jsem hackl vzorec a já se podělím o své řešení poté, co dám chytrým čtenářům nějaký čas, aby předložili své vlastní vzorce.
Kredit navíc
Hledáte další výzvu? Tady je stejný výsledek s použitým vlastním formátem čísel. Jaký je formát čísla? Tip: Toto jsem přetáhl od Mika Alexandra na jeho blogu Bacon Bits.
Níže jsou uvedena opravdu dobrá navrhovaná řešení, včetně velmi kompaktního a elegantního řešení od společnosti Panagiotis Stathopoulos. Pro záznam jsem šel s LOOKUP a rozšiřujícím se rozsahem:
=IF(C6"",C6-LOOKUP(2,1/($C$5:C5""),$C$5:C5),"")
Mechanika VYHLEDÁVÁNÍ pro tento druh problému je vysvětlena v tomto příkladu.