我正在寻找能够根据动态过滤的表格给出加权平均值的解决方案。这就是我所拥有的:
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
答案 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, Col2
:Col1 like '/brochures.htm%'
第二次查询 找到过滤表的加权平均值
第三次查询 仅获取第二个查询中的结果数字
使用此公式的好处是您只需引用一次数据,而且还有更多setting tools with query公式。