获取过滤表的加权平均值

我正在寻找一个解决scheme,将给我一个基于dynamic过滤表加权平均。 这是我有什么:

列A:url列表,列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% 

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

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

任何人都可以帮忙 我已经创build了一个谷歌表,所以你可以很容易地了解我如何达到74,83%。 – > https://docs.google.com/spreadsheets/d/1Q-ydRSOdoGN2wVj7Z4XWglz-0U7pL3_xMeyGdRB2K84/edit?usp=sharing

对于Excel 。 您可以使用数组公式来实现这一点。 input公式后,请务必使用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中用上面的示例数据testing了这个数据,结果是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)))

或使用分号; 而不是昏迷,如果你的本地环境与美国不一样。

我相信,这个公式会有帮助(仅限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, Col2 第一个查询selectCol2*Col3, Col2Col1 like '/brochures.htm%'

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

第三个查询仅从第二个查询中获得结果数字

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


使用这个公式的好处是你只需要参考一次数据,而且你还有更多的查询公式设置工具 。