我必须在 Excel 中实现一组公式,这些公式的要求似乎无法用任何合乎逻辑或简洁的方式只用公式来完成。
简短的介绍:
确定(并显示)产品每天“有效”内部成本的时间表,基于 1)作为一系列批量购买的产品支付的价格,以及 2)公司使用支付的价格每天消耗的产品对于每次购买,直到消耗完购买的金额,然后继续进行下一次购买。
简化细节:
我们有一张“PurchSums”表格,其中包含产品的批量购买历史记录:(这实际上是一个数据透视表)
| A | B | C | D |
1: Product Name Purch Date Rate Amount
...
23: Prod-Q 12/18/2012 $3.15 123.7
24: 1/24/2013 $3.05 748.2
25: 2/27/2013 $2.86 650.0
... ...
所以最初,内部价格应该是 3.15 美元/磅,直到我们使用前 123.7 磅,然后它应该切换到 3.05 美元,依此类推。
我们有一张按天计算的“数量”表:(产品消费从 3 月 1 日开始)
| A | B | C | D |
1: Product Name 3/1/2013 3/2/2013 3/3/2013 ...
...
12: Prod-Q 87.2 77.1 101.5 ...
... ...
我需要填写每日价格表“价格”的公式,其中包含产品每天的有效内部价格(现在手动填写):
| A | B | C | D |
1: Product Name 3/1/2013 3/2/2013 3/3/2013 ...
...
32: Prod-Q 3.15 3.15 3.05 ...
... ...
请注意,“Prod-Q”的价格更改为3.05
3 月 3 日。这是因为它的累计消费达到了 265.8 磅(87.2 + 77.1 + 101.5),超过了 12/18 购买的 123.7 磅,因此3.15
从 1/24 的价格转换为下一次购买的价格。
更多细节:
如果有帮助,第一张表“PurchSums”实际上是一个数据透视表。不幸的是,我不认为它确实如此,GETPIVOTDATA(..) 在这里也不会有用(但我很乐意犯错)。其中的信息来自另一张“采购”表,它只是所有采购的清单:
| A | B | C | D |
1: Product Name Purch Date Rate Amount
...
11: Prod-Q 12/18/2012 $3.15 123.7
...
34: Prod-Q 1/24/2013 $3.05 748.2
...
67: Prod-Q 2/27/2013 $2.86 650.0
...
额外的:
首先,我想尽可能使用现有单元格/工作表中的公式来执行此操作。另外,我想尽量减少必须添加的额外工作表的数量来支持这一点,因为工作簿已经相当可观了。
其次,是的,我知道我可以使用 VBA 函数来做到这一点,如果没有更好的方法,我会这样做,但如果可能的话,我想避免这种情况,因为根据我的经验,用大量 VBA 函数调用填充大工作表的公式可能会导致一些重大的性能问题。
对于如何有效解决此问题的任何想法,我将不胜感激。