Desafío de fórmula: diferencia con la última entrada - Rompecabezas

Tabla de contenido

El contexto

Hace un par de semanas, tuve una pregunta interesante de un lector sobre el seguimiento del aumento o la pérdida de peso en una tabla simple.

La idea es ingresar un nuevo peso cada día y calcular la diferencia con el día anterior. Cuando todos los días tienen una entrada, la fórmula es sencilla:

La diferencia se calcula con una fórmula como esta, se ingresa en D6 y se copia en la tabla:

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

Sin embargo, cuando se pierden uno o más días, las cosas salen mal y el resultado calculado no tiene sentido:

No, no subiste 157 libras en un día

El problema es que la fórmula usa la celda en blanco en el cálculo, que se evalúa como cero. Lo que necesitamos es una forma de localizar y utilizar el último peso registrado en la columna C.

El reto

¿Qué fórmula calculará una diferencia con respecto a la última entrada, incluso cuando se hayan saltado días?

Resultado deseado: diferencia con la última entrada anterior

Supuestos

  1. Se ingresa una sola fórmula en D6 y se copia (es decir, la misma fórmula en todas las celdas)
  2. La fórmula debe manejar una o muchas entradas en blanco anteriores.
  3. No se permite eliminar entradas en blanco (filas)
  4. No se permiten columnas auxiliares

Nota: una ruta obvia es utilizar una fórmula IF anidada. Lo desaconsejaría, ya que no se escalará bien para manejar un número desconocido de entradas en blanco consecutivas.

¿Tienes una solución? Deje un comentario con su fórmula propuesta a continuación.

Yo mismo pirateé una fórmula y compartiré mi solución después de dar a los lectores inteligentes un tiempo para enviar sus propias fórmulas.

Crédito adicional

¿Buscas más desafíos? Este es el mismo resultado, con un formato de número personalizado aplicado. ¿Cuál es el formato numérico? Pista: Le quité esto a Mike Alexander en su blog Bacon Bits.

Respuesta (haga clic para expandir)

A continuación, se proponen soluciones realmente buenas, incluida una solución muy compacta y elegante de Panagiotis Stathopoulos. Para que conste, elegí un LOOKUP y un rango en expansión:

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

La mecánica de LOOKUP para este tipo de problema se explica en este ejemplo.

Articulos interesantes...