Come posso rappresentare le regole di business nei modelli finanziari di Excel?
-
22-07-2019 - |
Domanda
Sto creando un "solo periodo" modello finanziario in Excel, ovvero un modello in cui le formule sono coerenti in ciascuna colonna, quindi è possibile copiarle / incollarle / estenderle come desiderato.
Sto suddividendo le ipotesi del modello in un foglio separato. Ad esempio, ho una cella chiamata Monthly_sales
; ecco quanti nuovi clienti aggiungo ogni mese. Le formule quindi appaiono così:
Foglio delle ipotesi 1.0
A B
1 | Monthly sales | 6 |
Foglio proiezioni 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
Quindi ad agosto avrò 6 clienti; a settembre, 12 clienti; nel mese di ottobre, 18 clienti. Fin qui tutto bene. Ma i miei primi clienti avranno bisogno di più risorse di sviluppo, giusto? Meglio aggiungere alcuni limiti.
Foglio delle ipotesi 2.0
A B
1 | Monthly sales | 6 |
2 | Early customers | 3 |
3 | Early dev cycle, months | 2 |
In inglese: i primi 3 clienti impiegheranno ciascuno 2 mesi di tempo di sviluppo. Da agosto a novembre, ho 1 cliente. A dicembre aggiungo un secondo cliente e ad aprile un terzo. Entro agosto 2010, ho superato il early_customers
e quindi posso iniziare a crescere di 6 al mese.
So come farlo con VBA; Posso scrivere una funzione definita dall'utente che controlla i mesi precedenti e cambio la formula # Clienti
in qualcosa del tipo
=B2+min(max_customers_this_month(),monthly_sales)
Ma sospetto che ci sia un modo per rappresentare questo concetto in modo dichiarativo in una formula Excel corretta. C'è?
Soluzione
Probabilmente c'è un modo più conciso per farlo, ma ecco una soluzione. Inserisci 1 in B2 e quanto segue in C2 (e copia nelle seguenti colonne):
=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
)
)
)
Si noti che questa soluzione presuppone che la riga 1 sia popolata con numeri per i mesi anziché con le date. Per usare le date, dovrai usare qualcosa di più sofisticato della semplice sottrazione per le due sottrazioni nella clausola OR che coinvolgono $ B1.