将加权销售收入分配到报告日期

时间:2017-10-24 14:38:55

标签: excel vba

我试图找到一种方法将收入分配到特定日期并权衡数字。因此,如果一天在我的两个报告日之间,我希望它根据报告天数之间的差异进行分配。例如,如果我有报告日期 20/11/2017 30/11/2017 10/12/2017 20/12/2017

和销售日期与收入

Sales dates Volumes
22/11/2017  600,000,000
12/12/2017  -100,000,000
13/12/2017  -141,400,000
20/12/2017  -100,962,000

我希望将22/11/2017的销售分配到8/10到20/11/2017和2/10到30/11/2017,依此类推,以便4个销售分发到

Reporting dates 
20/11/2017  480,000,000
30/11/2017  120,000,000
10/12/2017  -178,980,000
20/12/2017  -163,382,000

我还没有成功找到任何解决方案,任何人都知道我是否遗漏了一些东西,或者有任何好的想法,如何建立这样的解决方案?

1 个答案:

答案 0 :(得分:1)

好的,这个解决方案使用了很多辅助列,因为我没有时间将它压缩。我确信这些公式可以改进,甚至可以变成一个公式。

第一步是找到您的收入之间应分配的两个日期 将原始数据放在单元格 A1:B4 中,此公式放在单元格 C1:C4 中将返回更高的日期:

=DATE(YEAR($A1),MONTH($A1),CEILING(DAY($A1),10)) 

这个,置于 D1:D4 将返回较低的日期:

=DATE(YEAR($A1),MONTH($A1),FLOOR(DAY($A1),10))

修改 在花费更多时间清醒之后,您可以使用 =CEILING($A1,10)-1 {{1替换上述两个公式分别是

接下来,我们找到销售日期与上下日期的关系 在 E1:E4 中使用:

=FLOOR($A1,10)-1

并在 F1:F4

=(C1-A1)/10  

现在根据该分布返回收入:
G1:G4 中使用:

=(A1-D1)/10

H1:H4 中的公式略有不同,因为100%的数字只应返回一次。 2017年12月20日的收入仅出现在H列中。

=E1*$B1

我已将报告日期放在 J1:J4 范围内;所以2017年11月20日在J1,2017年11月30日在J2等 K1:K4 中的公式为:

=IF(F1=0,B1,F1*$B1)

L1:L4 中的公式为:

=SUMIF(C$1:C$4,$J1,$H$1:$H$4)  

最后,返回分布的公式将在单元格中强调前两个公式 M1:M4

=SUMIF(D$1:D$4,$J1,$G$1:$G$4)