如何计算一个选定的人的加权平均价格,显示他们的结果,每5天。结果需要是溢出到结果范围中的动态数组公式。请不要使用VBA,只使用和生成数组公式。
数据和预期结果的屏幕截图:
我试过的一个公式,但几乎所有的公式都不起作用:
=LET(data,A4:D12,dates,index(data,,1),names,INDEX(data,,2),amt,INDEX(data,,3),price,INDEX(data,,4),days,M4#,
weightedPrice, amt*price,
resp, MAP(days,LAMBDA(day,SUMIFS(weightedPrice,names,F4,dates,day)/SUMIFS(amt,names,F4,dates,day))),
resp )
以下是数据表:
| 日|姓名|金额|价格|
| - -----|- -----|- -----|- -----|
| 一个|乔|一百|十点|
| 3|乔|一百|十一点整|
| 一个|桑迪|二百五十|十二点|
| 一个|朱莉|四百|十三点|
| 2|汤姆|一百|十四点|
| 3|桑迪|两百|十五点|
| 3|桑迪|一百|十六点|
| 2|汤姆|一百|十七点|
| 3|乔|一百|十八点|
2条答案
按热度按时间qq24tv8q1#
尝试:
js81xvg62#
乔斯·伍利的回答很好。但是,为了更容易理解它,需要进行重构。下面是相同的答案,但使用描述性变量名称并分隔嵌套组件:
公式步骤说明:
1.首先,定义和提取数据。
1.计算总金额,其将作为最终计算中的分母。
1.单个金额被加权(乘以)它们的价格,从而产生一维数组。
1.创建了一个包含每天所有日期的二维矩阵(数组)。如果数据中存在日期(有金额),则值设置为true,否则为false。
1.该矩阵被转换为1和0,因此可以用于计算。
1.使用矩阵乘法函数MMULT()将这两个数组相乘,得到加权价格的一维数组。
1.加权价格除以每天的总金额,即为加权平均价格。
1.然后使用HSTACK(),结果(响应)由所需列和加权平均价格作为最后一列组成。