Formelutmaning - skillnad från senaste inlägg - Pussel

Innehållsförteckning

Sammanhanget

För några veckor sedan hade jag en intressant fråga från en läsare om spårning av viktökning eller förlust i en enkel tabell.

Tanken är att ange en ny vikt varje dag och beräkna skillnaden från föregående dag. När varje dag har en post är formeln enkel:

Skillnaden beräknas med en sådan formel, in i D6 och kopieras ner i tabellen:

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

Men när en eller flera dagar missas går det fel och det beräknade resultatet är inte meningsfullt:

Nej, du fick inte 157 pund på en dag

Problemet är att formeln använder den tomma cellen i beräkningen, som utvärderas till noll. Vad vi behöver är ett sätt att lokalisera och använda den senaste vikten som registrerats i kolumn C.

Utmaningen

Vilken formel beräknar en skillnad från den senaste posten, även när dagar har hoppats över?

Önskat resultat - skillnad med senaste föregående post

Antaganden

  1. En enda formel matas in i D6 och kopieras ner (dvs. samma formel i alla celler)
  2. Formeln måste hantera en eller flera tidigare tomma poster
  3. Det är inte tillåtet att ta bort tomma poster (rader)
  4. Inga hjälparpelare tillåtna

Obs! En uppenbar väg är att använda en Nested IF-formel. Jag skulle avskräcka detta, eftersom det inte går att skala bra för att hantera ett okänt antal på varandra följande tomma poster.

Har du en lösning? Lämna en kommentar med din föreslagna formel nedan.

Jag hackade ihop en formel själv, och jag delar min lösning efter att jag har gett de smarta läsarna tid att skicka in sina egna formler.

Extra kredit

Letar du efter mer utmaning? Här är samma resultat med ett anpassat nummerformat. Vad är nummerformatet? Tips: Jag svepte detta från Mike Alexander på hans Bacon Bits-blogg.

Svar (klicka för att expandera)

Det finns riktigt bra föreslagna lösningar nedan, inklusive en mycket kompakt och elegant lösning av Panagiotis Stathopoulos. För ordens skull gick jag med en LOOKUP och ett växande sortiment:

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

Mekaniken i LOOKUP för denna typ av problem förklaras i detta exempel.

Intressanta artiklar...