获取过滤后的加权平均值 table
Get a weighted average of a filtered table
我正在寻找一种解决方案,它可以根据动态过滤 table 为我提供加权平均值。这是我拥有的:
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%。
我可以用中间 sheet 分两次完成,我用 table 过滤 table
=FILTER(A1:C5;REGEXMATCH(A1:A5;"/brochures.html*"))
然后在第三个 sheet 中通过计算加权平均值
=SUMPRODUCT(C1:C5;B1:B5)/SUM(B1:B5)
,但正如您所想,这不是满足我需求的好解决方案。
有人可以帮忙吗?我创建了一个 google sheet,因此您可以轻松理解我是如何达到 74.83% 的。
-> https://docs.google.com/spreadsheets/d/1Q-ydRSOdoGN2wVj7Z4XWglz-0U7pL3_xMeyGdRB2K84/edit?usp=sharing
对于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)))
或使用分号 ;
代替逗号 ,
如果您的本地设置与美国不同。
我相信,这个公式会有所帮助(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%'
第二次查询
找到过滤后的 table
的加权平均值
第三次查询
仅获取第二个查询的结果数字
使用这个公式的好处是你只需要引用一次数据,而且你有更多的setting tools with query公式。
我正在寻找一种解决方案,它可以根据动态过滤 table 为我提供加权平均值。这是我拥有的:
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%。
我可以用中间 sheet 分两次完成,我用 table 过滤 table =FILTER(A1:C5;REGEXMATCH(A1:A5;"/brochures.html*")) 然后在第三个 sheet 中通过计算加权平均值 =SUMPRODUCT(C1:C5;B1:B5)/SUM(B1:B5) ,但正如您所想,这不是满足我需求的好解决方案。
有人可以帮忙吗?我创建了一个 google sheet,因此您可以轻松理解我是如何达到 74.83% 的。 -> https://docs.google.com/spreadsheets/d/1Q-ydRSOdoGN2wVj7Z4XWglz-0U7pL3_xMeyGdRB2K84/edit?usp=sharing
对于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)))
或使用分号 ;
代替逗号 ,
如果您的本地设置与美国不同。
我相信,这个公式会有所帮助(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%'
第二次查询 找到过滤后的 table
的加权平均值第三次查询 仅获取第二个查询的结果数字
使用这个公式的好处是你只需要引用一次数据,而且你有更多的setting tools with query公式。