
Kontekstas
Prieš porą savaičių man kilo įdomus skaitytojo klausimas apie svorio padidėjimo ar sumažėjimo stebėjimą paprastoje lentelėje.
Idėja yra įvesti naują svorį kiekvieną dieną ir apskaičiuoti skirtumą nuo ankstesnės dienos. Kai kiekvieną dieną yra įrašas, formulė yra paprasta:
Skirtumas apskaičiuojamas pagal tokią formulę, įrašytą į D6, ir nukopijuojamas lentelėje:
=IF(C6"",C6-C5,"")
Tačiau kai praleidžiama viena ar daugiau dienų, viskas nesiseka ir apskaičiuotas rezultatas neturi prasmės:
Ne, per vieną dieną nepriaugote 157 svarų
Problema ta, kad formulėje skaičiuojant naudojama tuščia ląstelė, kuri įvertinama iki nulio. Mums reikia, kaip surasti ir panaudoti paskutinį svorį, užfiksuotą C stulpelyje.
Iššūkis
Kokia formulė apskaičiuos skirtumą nuo paskutinio įrašo, net jei dienos bus praleistos?
Norimas rezultatas - skirtumas naudojant paskutinį ankstesnį įrašą
Prielaidos
- D6 įvedama viena formulė ir nukopijuojama žemyn (ty ta pati formulė visose ląstelėse)
- Formulėje turi būti vienas ar keli ankstesni tušti įrašai
- Tuščių įrašų (eilučių) pašalinti neleidžiama
- Neleidžiama jokių pagalbinių stulpelių
Pastaba: vienas akivaizdus kelias yra „Nested IF“ formulės naudojimas. Nerekomenduočiau to daryti, nes tai nebus gerai pritaikyta tvarkant nežinomą skaičių iš eilės einančių tuščių įrašų.
Turite sprendimą? Palikite komentarą su savo siūloma formule žemiau.
Aš pats nulaužiau formulę ir pasidalinsiu savo sprendimu, kurį laiką suteikęs protingiems skaitytojams pateikti savo formules.
Papildomas kreditas
Ieškote daugiau iššūkių? Čia tas pats rezultatas, pritaikius pasirinktinį skaičių formatą. Koks skaičių formatas? Užuomina: Aš perbraukiau tai iš Mike'o Alexanderio jo „Bacon Bits“ tinklaraštyje.
Žemiau yra tikrai gerų siūlomų sprendimų, įskaitant labai kompaktišką ir elegantišką Panagiotis Stathopoulos sprendimą. Norėdami įrašyti, aš nuėjau su LOOKUP ir besiplečiančiu asortimentu:
=IF(C6"",C6-LOOKUP(2,1/($C$5:C5""),$C$5:C5),"")
Šiame pavyzdyje paaiškinta šios problemos LOOKUP mechanika.