Предизвикателство на формула - разлика от последното влизане - Пъзел

Съдържание

Контекстът

Преди няколко седмици имах интересен въпрос от читател за проследяване на наддаване или загуба на тегло в проста таблица.

Идеята е всеки ден да въвеждате ново тегло и да изчислявате разликата от предходния ден. Когато всеки ден има запис, формулата е ясна:

Разликата се изчислява с формула като тази, въведена в D6 и копирана в таблицата:

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

Когато обаче се пропусне един или повече дни, нещата се объркват и изчисленият резултат няма смисъл:

Не, не сте качили 157 килограма за един ден

Проблемът е, че формулата използва празната клетка в изчислението, която се оценява на нула. Това, от което се нуждаем, е начин за намиране и използване на последното тегло, записано в колона В.

Предизвикателството

Каква формула ще изчисли разлика от последния запис, дори когато дните са пропуснати?

Желан резултат - разлика при последното предишно въвеждане

Предположения

  1. Една формула се въвежда в D6 и се копира (т.е. същата формула във всички клетки)
  2. Формулата трябва да обработва един или много предишни празни записи
  3. Премахването на празни записи (редове) не е разрешено
  4. Не са разрешени помощни колони

Забележка: един очевиден път е да се използва формула Nested IF. Бих обезкуражил това, тъй като няма да мащабира добре манипулацията с неизвестен брой последователни празни записи.

Имате решение? Оставете коментар с предложената формула по-долу.

Сам хакнах формула и ще споделя решението си, след като дам на умните читатели известно време да подадат свои формули.

Допълнителен кредит

Търсите още предизвикателство? Ето същия резултат, с приложен персонализиран формат на номера. Какъв е числовият формат? Съвет: Премахнах това от Майк Александър в блога му Bacon Bits.

Отговор (щракнете за разгъване)

По-долу има наистина добри предложени решения, включително много компактно и елегантно решение на Panagiotis Stathopoulos. За протокола, аз отидох с LOOKUP и разширяващ се диапазон:

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

Механиката на LOOKUP за този вид проблеми е обяснена в този пример.

Интересни статии...