如何根据多个行条件计算 ArrayFormula 内的加权平均值?

How to calculate weighted average inside an ArrayFormula based on multiple row-criteria?

我想解决一个问题已经很久了,但我还没有弄清楚该怎么做。

基本上,我需要根据多个条件计算加权平均值。该标准将从 ArrayFormula 中检索(这意味着我有具有不同标准值的列,我想使用 ArrayFormula 根据该标准自动填充平均值)。

这是我在 "main" table 上的结构:Main Table Structure

这就是我 "searching" 所在的 table:Search Table Structure

"search" table 与用户进行的所有操作之间的平衡。它包含所有买卖,以及相应的价格和数量。

基本上,我需要用户和代码的购买价格加权平均值,其中价格是价值,数量是权重。以上图为例:"Calculate the weighted average purchased price for ticker ABEV3 that belongs to example@example.com"。但这必须迭代到每一行,使用 ArrayFormula.

在实施 ArrayFormula 之前,我成功地使用了查询,但我发现 QUERYArrayFormula 在 [=16] 上使用 "Array" 时不兼容=] 子句。我也尝试使用 SUMPRODUCT,将其与 FILTER 配对,但 returns 大小不匹配错误。

重要提示: 在 "main" table 上,不同用户可以使用相同的代码,但同一用户的代码不能相同两次。它像数据库中的复合主键一样工作。

提前致谢!

我的 sheet 的副本可用 here.

尝试:

=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/)

所以,我设法做了一个解决方法。

我创建了另一个 sheet 来保存所有总和和分组查询。

在那 sheet 上,我查询了交易 sheet 两次,一次用于买入操作,另一次用于卖出操作,按用户和代码对它们进行分组。结果类似于 this。

之后,sheet 上的行会在添加事务后自动更新,只需在该查询间隔执行 VLOOKUP 即可。

为什么它对我有好处? 因为我需要总计用于其他目的,而这同时满足了这两个问题。