Formulės iššūkis - skirtumas nuo paskutinio įrašo Dėlionė

Turinys

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

  1. D6 įvedama viena formulė ir nukopijuojama žemyn (ty ta pati formulė visose ląstelėse)
  2. Formulėje turi būti vienas ar keli ankstesni tušti įrašai
  3. Tuščių įrašų (eilučių) pašalinti neleidžiama
  4. 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.

Atsakymas (spustelėkite, jei norite išplėsti)

Ž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.

Įdomios straipsniai...