获取过滤表的加权平均值

时间:2016-12-15 13:15:48

标签: excel google-sheets weighted-average

我正在寻找能够根据动态过滤的表格给出加权平均值的解决方案。这就是我所拥有的:

A栏:网址列表, B栏:数字, C栏:百分比

/page                   100000  20%
/brochures.htm?en       27443   75,30%
/brochures.htm?fr       1656    67,33%
/brochures.htm?it       483     75,00%
/brochures.htm?fr-fr    6       0,00%

我想要的是一个公式,它给出了以“/ brochures / htm”开头的页面的加权百分比,在这种情况下:74,83%。

我可以用中间工作表两次完成,我用它来过滤表格 = FILTER(A1:C5; REGEXMATCH(A1:A5; “/ brochures.html *”)) 然后在第三张表中通过计算加权平均值 = SUMPRODUCT(C1:C5; B1:B5)/ SUM(B1:B5) ,但你可以想象它不是一个很好的解决方案来满足我的需求。

任何人都可以提供帮助?我创建了一个谷歌表,这样你就可以很容易地理解我如何达到74,83%。 - > https://docs.google.com/spreadsheets/d/1Q-ydRSOdoGN2wVj7Z4XWglz-0U7pL3_xMeyGdRB2K84/edit?usp=sharing

2 个答案:

答案 0 :(得分:1)

Excel 。您可以使用数组公式来实现此目的。键入公式

后,请务必使用Ctrl + Shift + Enter而不是Enter
=SUMPRODUCT(IF(LEFT(A1:A5,14)="/brochures.htm",B1:B5,0),C1:C5)/SUM(IF(LEFT(A1:A5,14)="/brochures.htm",B1:B5,0))

我在上面用Excel中的示例数据对此进行了测试,结果为74.83%。我希望这有帮助

对于 Google表格,这将有效: =ArrayFormula(SUMPRODUCT(IF(LEFT(A1:A5,14)="/brochures.htm",B1:B5,0),C1:C5)/SUM(IF(LEFT(A1:A5,14)="/brochures.htm",B1:B5,0)))

如果您的本地设置与美国不同,请使用分号;代替逗号,

答案 1 :(得分:0)

我相信,这个公式会有所帮助(仅限Google表格):

=QUERY(QUERY(QUERY({A3:C8};"select 'avg', Col2*Col3, Col2 where Col1 like '/brochures.htm%'");"select Col1, sum(Col2)/sum(Col3) group by Col1");"select Col2 Label Col2 ''")

第一次查询在符合条件时选择Col2*Col3, Col2Col1 like '/brochures.htm%'

第二次查询 找到过滤表的加权平均值

第三次查询 仅获取第二个查询中的结果数字

在您的样本中: https://docs.google.com/spreadsheets/d/1Q-ydRSOdoGN2wVj7Z4XWglz-0U7pL3_xMeyGdRB2K84/edit#gid=1380706652

使用此公式的好处是您只需引用一次数据,而且还有更多setting tools with query公式。