Izziv formule - razlika od zadnjega vnosa - Uganka

Kazalo

Kontekst

Pred nekaj tedni sem imel od bralca zanimivo vprašanje o sledenju povečanju ali izgubi teže v preprosti tabeli.

Ideja je, da vsak dan vnesemo novo utež in izračunamo razliko od prejšnjega dne. Ko ima vsak dan vnos, je formula enostavna:

Razlika se izračuna s formulo, kot je ta, vnesena v D6 in kopirana v tabelo:

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

Ko pa zamudite enega ali več dni, se stvari pokvarijo in izračunani rezultat nima smisla:

Ne, v enem dnevu niste pridobili 157 kilogramov

Težava je v tem, da formula pri izračunu uporablja prazno celico, ki je enaka nič. Potrebujemo način, kako najti in uporabiti zadnjo težo, zabeleženo v stolpcu C.

Izziv

Katera formula bo izračunala razliko od zadnjega vnosa, tudi če so bili dnevi preskočeni?

Želeni rezultat - razlika pri zadnjem prejšnjem vnosu

Predpostavke

  1. Posamezna formula se vnese v D6 in kopira navzdol (tj. Enaka formula v vseh celicah)
  2. Formula mora obravnavati enega ali več prejšnjih praznih vnosov
  3. Odstranjevanje praznih vnosov (vrstic) ni dovoljeno
  4. Noben pomožni stolpec ni dovoljen

Opomba: ena očitna pot je uporaba formule ugnezdenega IF. Tega bi odsvetoval, ker ne bo dobro obvladal neznanega števila zaporednih praznih vnosov.

Imate rešitev? Spodaj pustite komentar s predlagano formulo.

Sama sem sestavila formulo in svojo rešitev bom delila, potem ko bom pametnim bralcem dala nekaj časa, da predložijo svoje formule.

Dodatni kredit

Iščete več izzivov? Tu je isti rezultat z uporabljeno obliko števil po meri. Kakšna je oblika števil? Namig: Mikea Alexa sem to potegnil na njegovem blogu Bacon Bits.

Odgovor (kliknite za razširitev)

Spodaj so resnično predlagane dobre rešitve, vključno z zelo kompaktno in elegantno rešitvijo Panagiotisa Stathopoulosa. Za zapisnik sem šel z POGLEDOM in razširjenim obsegom:

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

V tem primeru so razložene mehanike LOOKUP-a za tovrstne težave.

Zanimive Članki...