Formelutfordring - forskjell fra forrige oppføring - Puslespill

Innholdsfortegnelse

Sammenhengen

For et par uker siden hadde jeg et interessant spørsmål fra en leser om sporing av vektøkning eller tap i en enkel tabell.

Tanken er å legge inn en ny vekt hver dag, og beregne forskjellen fra forrige dag. Når hver dag har en oppføring, er formelen grei:

Forskjellen beregnes med en formel som denne, angitt i D6, og kopieres nedover i tabellen:

=IF(C6"",C6-C5,"")

Men når en eller flere dager blir savnet, går det galt, og det beregnede resultatet gir ikke mening:

Nei, du fikk ikke 157 pund på en dag

Problemet er at formelen bruker den tomme cellen i beregningen, som evalueres til null. Det vi trenger er en måte å finne og bruke den siste vekten registrert i kolonne C.

Utfordringen

Hvilken formel vil beregne en forskjell fra forrige oppføring, selv når dager har blitt hoppet over?

Ønsket resultat - forskjell ved å bruke forrige oppføring

Antagelser

  1. En enkelt formel legges inn i D6 og kopieres ned (dvs. samme formel i alle celler)
  2. Formelen må håndtere en eller flere forrige blanke oppføringer
  3. Fjerning av tomme oppføringer (rader) er ikke tillatt
  4. Ingen hjelpesøyler tillatt

Merk: en åpenbar vei er å bruke en nestet IF-formel. Jeg vil motvirke dette, siden det ikke skaleres godt å håndtere et ukjent antall påfølgende blanke oppføringer.

Har du en løsning? Legg igjen en kommentar med den foreslåtte formelen nedenfor.

Jeg hacket sammen en formel selv, og jeg vil dele løsningen min etter at jeg har gitt de smarte leserne litt tid til å sende inn sine egne formler.

Ekstra kreditt

Leter du etter mer utfordring? Her er det samme resultatet, med et tilpasset nummerformat brukt. Hva er tallformatet? Tips: Jeg sveipet dette fra Mike Alexander på hans Bacon Bits-blogg.

Svar (klikk for å utvide)

Det er virkelig gode løsningsforslag nedenfor, inkludert en veldig kompakt og elegant løsning av Panagiotis Stathopoulos. For ordens skyld gikk jeg med en LOOKUP og et utvidende utvalg:

=IF(C6"",C6-LOOKUP(2,1/($C$5:C5""),$C$5:C5),"")

Mekanikken til LOOKUP for denne typen problemer blir forklart i dette eksemplet.

Interessante artikler...