![带优先级的 Excel 电子表格平均值](https://linux22.com/image/1415850/%E5%B8%A6%E4%BC%98%E5%85%88%E7%BA%A7%E7%9A%84%20Excel%20%E7%94%B5%E5%AD%90%E8%A1%A8%E6%A0%BC%E5%B9%B3%E5%9D%87%E5%80%BC.png)
我需要帮助,如何编写 Excel 公式(或任何 Excel 解决方案)来按优先级求和。
我有这样的交易数据:
Date Unit Price Buy/Sell
7/11 3 10 Buy
7/12 2 9 Sell
7/13 4 8 Buy
7/14 3 11 Sell
我想计算手头单位的平均购买价格,而不是所有购买单位的平均购买价格。我手头有 2 个单位,回想一下先进先出法,所以平均价格是 8 美元。
买入了 3 个单位@$10 和 4 个单位@$8,并且售出了前 5 个单位。
有什么方法可以在 Excel 中解决这个问题吗?
答案1
没有使用工作表函数来执行此操作的简单方法,因为您必须跟踪随时间变化的任意长度的购买价格列表。
假设单位数为正整数,我可以使用辅助列来实现。假设数据在 AD 列中,辅助列为 E。
在 E2 中,输入
=IF(D2="Buy",E1&REPT(C2&",",B2),MID(E1,1+FIND("*",SUBSTITUTE(E1,",","*",B2)),32767))
然后,最后一个单元格将包含一个文本字符串,您需要=AVERAGE()
使用以下方法之一将其转换为公式https://stackoverflow.com/questions/4471884/turn-a-string-formula-into-a-real-formula
不幸的是,您可能会遇到单元格长度限制,即 32768 个字符。