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

Excel 将加权销售收入分配到报告日期,excel,vba,Excel,Vba,我正试图找到一种方法,将收入分配到特定日期,并对数字进行加权。因此,如果一天在我的两个报告日之间,我希望它根据报告日之间的差异进行分配。例如,如果我有报告日期 20/11/2017 30/11/2017 10/12/2017 2017年12月20日 销售日期和收入 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,0

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

20/11/2017
30/11/2017
10/12/2017
2017年12月20日

销售日期和收入

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
我希望2017年11月22日<代码>的销售额将于2017年11月20日<代码>和2017年11月30日<代码>分别于2010年8月和2010年2月分配给<代码>等等,这样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

我还没有成功地找到任何解决方案,有人知道我是否错过了什么,或者有什么好的想法如何构建这样一个集合

好的,这个解决方案使用了很多helper列,因为我还没有时间将其全部浓缩。我相信这些公式可以改进,甚至可以变成一个单一的公式

第一步是找出你的收入应该分配的两个日期。
将原始数据放在单元格A1:B4中,此公式放在单元格C1:C4中,将返回较高的日期:

=DATE(YEAR($A1),MONTH($A1),CEILING(DAY($A1),10)) 
=DATE(YEAR($A1),MONTH($A1),FLOOR(DAY($A1),10))
而这个,放置在D1:D4中,将返回较低的日期:

=DATE(YEAR($A1),MONTH($A1),CEILING(DAY($A1),10)) 
=DATE(YEAR($A1),MONTH($A1),FLOOR(DAY($A1),10))
编辑:在花多一点时间清醒后,您可以分别用
=天花板($A1,10)-1
=地板($A1,10)-1
替换上述两个公式

接下来,我们将找到销售日期相对于上下日期的位置。
在E1:E4中使用:

=(C1-A1)/10  
=E1*$B1
而在F1:F4中:

=(A1-D1)/10
=SUM(K1:L1)
现在返回基于该分布的收入:
在G1:G4中使用:

=(C1-A1)/10  
=E1*$B1
H1:H4中的公式略有不同,因为100%的数字只能返回一次。2017年12月20日的收入将仅出现在H栏中

=IF(F1=0,B1,F1*$B1)
我已将报告日期放在范围J1:J4内;因此,2017年11月20日在J1,2017年11月30日在J2,等等。
K1:K4中的公式为:

=SUMIF(C$1:C$4,$J1,$H$1:$H$4)  
=SUMIF(D$1:D$4,$J1,$G$1:$G$4)  
L1:L4中的公式为:

=SUMIF(C$1:C$4,$J1,$H$1:$H$4)  
=SUMIF(D$1:D$4,$J1,$G$1:$G$4)  
最后,返回分布的公式将前两个公式加在单元格中M1:M4

=(A1-D1)/10
=SUM(K1:L1)

你可能想在你的问题中包含你正在使用的代码。我不明白你是如何得到2018年12月10日和2018年12月20日的数字的……你能更具体一点吗?也许你可以在这里添加更多的示例,以便我们更好地理解。到目前为止,我没有使用任何代码,只是显示了它是通过手动计算完成的。由于报告日期12月10日至12月20日之间还有10天,12月20日的日期将包括-100962,00的10月10日+100000,00的2/10+141400000的3/10 ian0411-这是一个打字错误,应该是2017年。谢谢Darren!非常感谢!