Виклик формули - відмінність від останнього вступу - Головоломка

Зміст

Контекст

Пару тижнів тому у мене було цікаве запитання від читача про відстеження збільшення або втрати ваги за простою таблицею.

Ідея полягає в тому, щоб щодня вводити нову вагу та обчислювати різницю порівняно з попереднім днем. Коли кожен день має запис, формула є простою:

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

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

Однак, коли пропущено один або кілька днів, все йде не так, і обчислений результат не має сенсу:

Ні, ви не набрали 157 фунтів за один день

Проблема полягає у тому, що формула використовує порожню клітинку в обчисленні, яка обчислюється як нуль. Нам потрібен спосіб знайти та використовувати останню вагу, записану у стовпці C.

Змагання

За якою формулою буде розрахована різниця від останнього запису, навіть коли дні пропущені?

Бажаний результат - різниця з використанням останнього попереднього запису

Припущення

  1. В D6 вводиться і копіюється одна формула (тобто однакова формула у всіх клітинках)
  2. Формула повинна обробляти один або кілька попередніх порожніх записів
  3. Видалення порожніх записів (рядків) заборонено
  4. Жодні допоміжні стовпці не допускаються

Примітка: один очевидний шлях полягає у використанні формули вкладеного IF. Я б не хотів цього, оскільки це не буде добре масштабувати обробку невідомої кількості послідовних порожніх записів.

Отримали рішення? Залиште коментар із запропонованою формулою нижче.

Я сам зламав формулу і поділюсь своїм рішенням після того, як дам розумним читачам деякий час подати власні формули.

Додатковий кредит

Шукаєте більше викликів? Ось той самий результат із застосованим користувацьким форматом чисел. Який формат чисел? Підказка: Я переніс це від Майка Олександра у своєму блозі Bacon Bits.

Відповідь (натисніть, щоб розгорнути)

Нижче є дійсно хороші запропоновані рішення, включаючи дуже компактне та елегантне рішення від Panagiotis Stathopoulos. Для запису я пішов із ПЕРЕГЛЯДОМ та розширенням асортименту:

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

Механіка ПЕРЕГЛЯДУ такого роду проблем пояснюється в цьому прикладі.

Цікаві статті...