![](https://cdn.wiki-base.com/7039766/formula_challenge_-_difference_from_last_entry_puzzle.png.webp)
Контекстът
Преди няколко седмици имах интересен въпрос от читател за проследяване на наддаване или загуба на тегло в проста таблица.
Идеята е всеки ден да въвеждате ново тегло и да изчислявате разликата от предходния ден. Когато всеки ден има запис, формулата е ясна:
Разликата се изчислява с формула като тази, въведена в D6 и копирана в таблицата:
=IF(C6"",C6-C5,"")
Когато обаче се пропусне един или повече дни, нещата се объркват и изчисленият резултат няма смисъл:
Не, не сте качили 157 килограма за един ден
Проблемът е, че формулата използва празната клетка в изчислението, която се оценява на нула. Това, от което се нуждаем, е начин за намиране и използване на последното тегло, записано в колона В.
Предизвикателството
Каква формула ще изчисли разлика от последния запис, дори когато дните са пропуснати?
Желан резултат - разлика при последното предишно въвеждане
Предположения
- Една формула се въвежда в D6 и се копира (т.е. същата формула във всички клетки)
- Формулата трябва да обработва един или много предишни празни записи
- Премахването на празни записи (редове) не е разрешено
- Не са разрешени помощни колони
Забележка: един очевиден път е да се използва формула Nested IF. Бих обезкуражил това, тъй като няма да мащабира добре манипулацията с неизвестен брой последователни празни записи.
Имате решение? Оставете коментар с предложената формула по-долу.
Сам хакнах формула и ще споделя решението си, след като дам на умните читатели известно време да подадат свои формули.
Допълнителен кредит
Търсите още предизвикателство? Ето същия резултат, с приложен персонализиран формат на номера. Какъв е числовият формат? Съвет: Премахнах това от Майк Александър в блога му Bacon Bits.
По-долу има наистина добри предложени решения, включително много компактно и елегантно решение на Panagiotis Stathopoulos. За протокола, аз отидох с LOOKUP и разширяващ се диапазон:
=IF(C6"",C6-LOOKUP(2,1/($C$5:C5""),$C$5:C5),"")
Механиката на LOOKUP за този вид проблеми е обяснена в този пример.