【问题标题】:Cash-flow forecasting in excelexcel中的现金流量预测
【发布时间】:2019-02-07 17:44:47
【问题描述】:

我希望它能够输入合同详细信息(客户名称、合同期限和年度总金额)。使用这些合同详细信息,我希望程序或模板填充一个日历,我们可以在其中查看每天的存款。

例如:如果我输入了 2 个合同:

  1. 从 2019 年 1 月 1 日开始的年度总金额 120 美元
  2. 从 2019 年 1 月 3 日开始的年度总金额为 180 美元

通过选择查看 3 月 日历,我会在 2019 年 1 月 3 日看到 2 笔存款,一笔 10 美元,另一笔 15 美元,总计 25 美元。但是,如果我选择查看 2 月 月份,我会在 2019 年 1 月 2 日看到 1 笔 10 美元的存款。

我已经创建了一个 Excel 表格,如果它是特定日期的一次性存款,它会完美地填充它。

我遇到困难的是每月存款特殊存款特殊情况,第一个月需要每年总金额的 25%,并且将完成剩余的 75% 的年总额在接下来的几个月中 5 等额存款)

这是我为一月的每一天制定的基本公式:

=IFERROR(IF(AND(VALUE(LEFT(Inputs!$D3,2))=B$2,(VALUE(MID(Inputs!$D3,4,2))='C.F. JAN'!$B$1)),IF(Inputs!$C3="Fixed Monthly",Inputs!$G3/12,IF(Inputs!$C3="Yearly",Inputs!$G3,"")),""),"")

这是二月的一个:

=IFERROR(IF(AND(VALUE(LEFT(Inputs!$D3,2))=C$2,(VALUE(MID(Inputs!$D3,4,2))='C.F. FEB'!$B$1)),IF(Inputs!$C3="Fixed Monthly",Inputs!$G3/12,IF(Inputs!$C3="Yearly",Inputs!$G3,"")),""),"")

我为每个月创建了表格,汇总了每个客户的相应存款金额。

@jessi 这是我的数据的样子:

这是M3上的公式:

=SUMIF($D$3:$D$10000,$L3,$H$3:$H$10000)+SUMIFS($I$3:$I$10000,$D$3:$D$10000,"<"&$L3,$J$3:$J$10000,">="&$L3)

【问题讨论】:

  • 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。
  • 您的示例没有特殊功能,但您可以设置它们。例如,您的“合同”工作表或范围可能包含以下字段:开始日期、总计、第一次、分期付款。然后,您可以说,“IF(First中有东西)......处理方式不同”和“IF(分期付款有东西)......划分其他方式。用vba处理这样的事情可能更容易.
  • @jessi 好主意,我认为我需要添加的 if 语句将是无穷无尽的。我认为我需要做的是(如果月份是 01,则将金额/12 添加到 02、03、04、05 等),然后如果是 02,则添加到 03、04、05)。您还有其他选择吗?
  • @jessi 是的,我同意你的观点,vba 可能更容易,不幸的是我对 VBA 编码的了解非常有限:S
  • @ScottCraner 我已经相应地编辑了这个问题。谢谢

标签: excel vba if-statement calendar


【解决方案1】:

所以,你可以做一些初步的数学计算,这样你的 if 语句就很简单了。

这是一个例子。看到添加的列?您可以输入合同、价值、开始、首次和分期付款的数据。 FirstPayment、NormalPayment 和 Stop 的计算。

FirstPayment,对于合同 a,第 2 行,计算如下:

=IF(ISBLANK(D2),G2,D2*B2)

合约 a 第 2 行的 NormalPayment,计算如下:

=IF(ISBLANK(D2),B2/E2,(1-D2)*B2/E2)

合约 a 的止损,第 2 行计算如下:

=IF(ISBLANK(D2),EDATE(C2,E2),EDATE(C2,E2+1))

然后,预计付款的月份如下所示(所示为 1 月的公式): 注意:日期 2019-01-01 在 A7 中,结果(此公式所在的位置)在 A8 中。复制并粘贴其余列。

=SUMIF($C$2:$C$4,$A7,$F$2:$F$4)+SUMIFS($G$2:G$4,$C$2:$C$4,"<"&$A7,$H$2:$H$4,">="&$A7)

请注意,第一个 SUMIF 处理的是第一个月内的任何事情。 SUMIF 处理的是 Start 和 Stop 之间的任何事情。

编辑更改的问题以按天显示现金流 要按天显示,您首先需要在合约数据表中添加另一列,比如第一列。这是 DAY 列。 DAY($C2)。为了让您的现金流保持简单,实际上将这个If(day($C2)&gt;28),1,day($C2)) 设置为使任何落在 29、30 或 31 的跌落都出现在下一个第一个。您可以在这里做出其他选择。

然后,您可以在现金流量表中及时记录每一天。

我将现金流放在一个新选项卡上,并将合同数据选项卡命名为 CONTRACTS

现金流公式(日期为 $A2,结果为 $B2)为:

=SUMIF(CONTRACTS!$C$2:$C$5,$A2,CONTRACTS!$F$2:$F$5)+SUMIFS(CONTRACTS!$G$2:G$5,CONTRACTS!$C$2:$C$5,"<"&$A2,CONTRACTS!$H$2:$H$5,">="&$A2,CONTRACTS!$I$2:$I$5,DAY(A2))

【讨论】:

  • 马上试试这个,谢谢!完成后会立即更新。
  • @jerri,所以我现在已经玩了一段时间了,并添加了不仅有每月存款清单而且还有每日存款清单的可能性。在 A7 上我写了 01/01/2019,然后在 A8 上我写了 02/01/2019 并将其拖到 2020 年底(总共 730 行)。如果我在 2019 年 2 月 2 日使用相同的公式,我会得到一个结果而不是 0$。所以这让我相信这个公式考虑的是月份和年份,而不是日期。知道如何将这一天也包括在内,以便在此示例中显示 02/02/2019 的 0$ 等吗?
  • @jerri 没关系!我发现了问题,$A1 代表一个空白单元格,当我将公式拖放到 $A2 时,我添加了一个 $,它运行良好。再次感谢杰西
  • 哎呀,由于某种原因,我无法让它工作。将金额放在正确的日期和之后的每一天,或者将金额放在正确的日期,但不是之后的几个月。
  • 好的。我不认为我理解你的问题。您能否使用看起来像您在尝试实施此解决方案时所拥有的数据集来更新您的问题?
猜你喜欢
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
  • 2019-07-20
  • 1970-01-01
相关资源
最近更新 更多