【问题标题】:How can I represent business rules in Excel financial models?如何在 Excel 财务模型中表示业务规则?
【发布时间】:2009-08-04 14:33:47
【问题描述】:

我正在 Excel 中创建一个“单周期”财务模型 - 即每列中的公式都是一致的模型,因此您可以根据需要复制/粘贴/扩展它们。

我将模型的假设分解为单独的表格。例如,我有一个名为monthly_sales 的单元格;这就是我每个月添加的新客户数量。然后公式如下所示:

假设表 1.0

      A             B                  
1 | Monthly sales | 6                 |

投影表 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

所以在 8 月,我将有 6 个客户; 9月,12个客户; 10 月,18 位客户。到现在为止还挺好。但是我最早的客户需要更多的开发资源,对吧?我最好添加一些限制。

假设表 2.0

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

英文:前 3 位客户每人需要 2 个月的开发时间。从 8 月到 11 月,我有 1 个客户。 12 月,我添加了第二个客户,4 月又添加了第三个。到 2010 年 8 月,我通过early_customers,然后我可以开始每月增长 6 个。

我知道如何用 VBA 做到这一点;我可以编写一个用户定义的函数来检查前几个月,并将# Customers 公式更改为类似

=B2+min(max_customers_this_month(),monthly_sales)

但我怀疑有某种方法可以在适当的 Excel 公式中以声明方式表示此概念。有吗?

【问题讨论】:

  • 样本数据中的早期开发周期 (2) 与叙述中描述的周期 (4) 之间似乎不匹配。

标签: excel finance excel-formula declarative


【解决方案1】:

可能有更简洁的方法可以做到这一点,但这里有一个解决方案。在 B2 中输入 1,在 C2 中输入以下内容(并复制到以下列中):

=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
              )
      )
   )

请注意,此解决方案假定第 1 行填充了月份的数字而不是日期。要使用日期,您必须对 OR 子句中涉及 $B1 的两个减法使用比简单减法更复杂的方法。

【讨论】:

  • 谢谢 - 这行得通! (感谢您指出我的示例中的错误。)我一直在尝试重构它以了解 为什么 它有效;我不太了解每个表达式的意图,尤其是 OR 表达式。如果你用较小的命名表达式组成它,我很想知道名字是什么;否则,别担心。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-07
  • 2016-06-07
  • 1970-01-01
  • 2012-04-03
相关资源
最近更新 更多