2016-12-15 104 views
1

我正在寻找一个解决方案,它会根据动态过滤的表给我一个加权平均值。以下是我有:得到过滤表的加权平均值

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) 的加权平均值,但正如您可以想象的那样,这对我的需求并不是一个好的解决方案。

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

+0

为了使我们更容易为您提供帮助,请提供有关您的数据的更多详细信息。我没有看到你如何从你提供的数据中获得结果。请阅读[如何提供示例](http:// stackoverflow。com/help/mcve) –

+0

添加了Google表单以帮助您了解@RonRosenfeld ;-) –

回答

1

对于Excel。你可以使用数组公式来实现这一点。确保使用Ctrl + Shift + 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%出来后,只需输入。我希望这有助于

对于谷歌床单这将工作: =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)))

或使用分号;而不是昏迷,如果你的本地设置来自美国不同。

+0

我刚刚尝试过,但出现错误。 “使用Ctrl + Shift + Enter”是什么意思:我应该在什么时候使用该快捷方式?它是做什么的? @ maxhob17 –

+0

在Excel中,输入公式之后,而不是输入公式,而是使用Ctrl + Shift + Enter,这将创建一个数组公式,而不是常规数组公式,而不是常规数组公式。 html的 – maxhob17

0

我相信,这个公式将有助于(只有谷歌表):

=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%'

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

第三个查询 从第二查询

仅获取得到的数字在你的样品: https://docs.google.com/spreadsheets/d/1Q-ydRSOdoGN2wVj7Z4XWglz-0U7pL3_xMeyGdRB2K84/edit#gid=1380706652


使用这个公式的好处是,你必须引用数据只有一次,还有更多setting tools with query公式。