我试图加权现有库存的平均值,即888个项目。我们使用FIFO,这意味着我需要从最近的日期开始追溯。我如何只选择那些与可用库存余额之和的单元格(888),然后与价格相加?
Date Items Recieved Price
9/1/2022 254 $25.00
8/25/2022 242 $25.00
8/18/2022 230 $65.00
8/11/2022 218 $77.00
8/4/2022 206 $45.00
7/28/2022 194 $77.00
7/21/2022 182 $89.00
7/14/2022 737 $74.00
7/7/2022 1292 $86.00
6/30/2022 1847 $87.00查询、数组公式和SUMproduct
发布于 2022-11-03 11:58:56
您标记了Excel和Google。他们不一样。在Excel (Office 365)中,您可以使用以下方法完成此操作:
=LET(stock,888,
data,B2:C11,
items,INDEX(data,,1),
price,INDEX(data,,2),
cumulative,SCAN(0,items,LAMBDA(a,b,a+b)),
r,XMATCH(stock,cumulative,1),
correction,INDEX(items,r)+stock-INDEX(cumulative,r),
SUMPRODUCT(
IFERROR(
VSTACK(
TAKE(items,r-1),
correction),
correction),
TAKE(price,r)))stock是求和的数字。data是包含商品和价格的范围。SCAN用于逐行获取所有项的累积和。XMATCH用于在值大于或等于股票值的累积和中查找行(r)。r用于将该行中的项更正为获得与股票值相等的行r的累积和所需的值。(行r中的项+库存-r行中的累积和)。我取项目的r前的行,加上(堆栈)计算的校正项值,并在SUMPRODUCT中使用,价格可达r。如果r是第一行,它将在TAKE(items,r-1)-part上抛出一个错误,如果是这样,IFERROR确保使用校正的值,而不将其堆叠在以前的项值上。
编辑:既然你提到了FIFO,你可能会有兴趣从下到上计算。在这种情况下,您可以使用:
=LET(stock,888,
data,SORT(A2:C11,1,1),
items,INDEX(data,,2),
price,INDEX(data,,3),
cumulative,SCAN(0,items,LAMBDA(a,b,a+b)),
r,XMATCH(stock,cumulative,1),
correction,INDEX(items,r)+stock-INDEX(cumulative,r),
SUMPRODUCT(
IFERROR(
VSTACK(
TAKE(items,r-1),
correction),
correction),
TAKE(price,r)))它的工作原理是一样的,它只是对数据使用一个额外的列,这样它就可以从旧的(第一个)排序到新的。

现在还不清楚您是想要这个SUMPRODUCT还是它的平均值,但这只是将/stock添加到LET的最后一个参数中。
https://stackoverflow.com/questions/74301129
复制相似问题