Pregunta

Estoy creando un " un período " modelo financiero en Excel, es decir, un modelo donde las fórmulas son consistentes en cada columna, por lo que puede copiarlas / pegarlas / extenderlas como desee.

Estoy rompiendo los supuestos del modelo en una hoja separada. Por ejemplo, tengo una celda llamada Monthly_sales ; esa es la cantidad de nuevos clientes que agrego cada mes. Las fórmulas se ven así:

Hoja de supuestos 1.0

      A             B                  
1 | Monthly sales | 6                 |

Hoja de proyecciones 1.0

     A               B     C                   D                   E                  
1 |               |     | August 2009       | September 2009    | October 2009
2 | # Customers   |     | =B2+monthly_sales | =C2+monthly_sales | =D2+monthly_sales

Entonces, en agosto, tendré 6 clientes; en septiembre, 12 clientes; en octubre, 18 clientes. Hasta ahora tan bueno. Pero mis primeros clientes necesitarán más recursos de desarrollo, ¿verdad? Mejor agrego algunos límites.

Hoja de supuestos 2.0

      A                       B                  
1 | Monthly sales           | 6                 |
2 | Early customers         | 3                 |
3 | Early dev cycle, months | 2                 |

En inglés: los primeros 3 clientes tendrán cada uno 2 meses de tiempo de desarrollo. De agosto a noviembre, tengo 1 cliente. En diciembre, agrego un segundo cliente, y en abril, un tercero. Para agosto de 2010, he terminado con los early_customers , y luego puedo comenzar a crecer en 6 por mes.

Sé cómo hacer esto con VBA; Puedo escribir una función definida por el usuario que verifique meses anteriores, y cambio la fórmula # Clientes a algo así como

=B2+min(max_customers_this_month(),monthly_sales)

Pero sospecho que hay alguna forma de representar este concepto de forma declarativa en una fórmula de Excel adecuada. ¿Hay?

¿Fue útil?

Solución

Probablemente haya una forma más concisa de hacer esto, pero aquí hay una solución. Ingrese 1 en B2 y lo siguiente en C2 (y copie en las siguientes columnas):

=IF(
    B2 > Early_customers,
    B2 + Monthly_sales,
    IF(
       OR(
          C1 - $B1 < Early_dev_cycle,
          OFFSET(B2, 0, MAX(-Early_dev_cycle + 1, $B1 - B1)) <> B2 
         ),
       B2,
       B2 + IF(
               B2 < Early_customers,
               1,
               Monthly_sales
              )
      )
   )

Tenga en cuenta que esta solución supone que la fila 1 se rellena con números para los meses en lugar de fechas. Para usar fechas, tendrá que usar algo más sofisticado que la simple resta para las dos restas en la cláusula OR que involucran $ B1.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top