[英]How to calculate weighted average inside an ArrayFormula based on multiple row-criteria?
我一直在尝试解决一个问题,但我还没有弄清楚如何做到这一点。
基本上,我需要根据多个标准计算加权平均值。 该标准将从ArrayFormula
中检索(这意味着我有具有不同标准值的列,并且我想使用ArrayFormula
根据该标准自动填充平均值)。
这是我在“主”表上的结构:主表结构
这就是我正在“搜索”的表:搜索表结构
“搜索”表的工作方式类似于平衡用户所做的所有操作。 它包含所有购买和销售,以及相应的价格和数量。
基本上,我需要用户和股票代码的购买价格加权平均值,其中价格是价值,数量是权重。 以上面的图片为例:“计算属于 example@example.com 的股票 ABEV3 的加权平均购买价格”。 但这必须使用ArrayFormula.
在实现ArrayFormula
之前,我成功地使用了查询,但我发现在WHERE
子句上使用“Array”时QUERY
和ArrayFormula
不兼容。 我也尝试使用SUMPRODUCT
,将其与FILTER
配对,但它返回大小不匹配错误。
需要注意的重要一点:在“主”表中,不同用户可以使用相同的代码,但同一用户的两次代码不同。 它就像在数据库中的复合主键一样工作。
提前致谢!
我的工作表副本可在此处获得。
尝试:
=ARRAYFORMULA(IFNA(VLOOKUP(A2:A&B2:B; QUERY(FILTER({
'Transactions - Variable Income'!A2:A&'Transactions - Variable Income'!B2:B\
'Transactions - Variable Income'!D2:D*'Transactions - Variable Income'!E2:E};
'Transactions - Variable Income'!C2:C="buy");
"select Col1,avg(Col2) group by Col1"); 2; 0)))
( https://www.wallstreetmojo.com/average-vs-weighted-average/ )
所以,我设法做了一个解决方法。
我创建了另一张表来保存所有总和和分组查询。
在该表上,我查询了交易表两次,一次用于买入操作,另一次用于卖出操作,并按用户和股票代码对它们进行分组。 结果是这样的。
之后,一旦添加了事务,该表上的行就会自动更新,只需在该查询间隔上执行VLOOKUP
即可。
为什么对我有好处? 因为我需要总数用于其他目的,这可以满足这两个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.