Excel 获取列中前1/3、后1/3和后1/3值的平均值
我有一列数字和一个参考列。我试图将数字列分为前三分之一、第二三分之一和最后三分之一,并取每个数字的平均值Excel 获取列中前1/3、后1/3和后1/3值的平均值,excel,excel-formula,Excel,Excel Formula,我有一列数字和一个参考列。我试图将数字列分为前三分之一、第二三分之一和最后三分之一,并取每个数字的平均值 Values Ref column 1.7 cow 2.3 cow 2.6 cow 1.8 sheep 1.3 sheep 2.2 sheep 1.5 sheep 1.2 sheep 2.3 sheep 1.5 goose 2.5 goose 例如,“羊”的前两个值、后两个值和后
Values Ref column
1.7 cow
2.3 cow
2.6 cow
1.8 sheep
1.3 sheep
2.2 sheep
1.5 sheep
1.2 sheep
2.3 sheep
1.5 goose
2.5 goose
例如,“羊”的前两个值、后两个值和后两个值的平均值。换句话说,我想取与“sheep”相邻的每1/3个单元格的平均值。添加一列以累积计算您正在查看的单词的实例,然后检查
平均值中的行数
C2==CountIf($B$2:$B2,$B2)
和fill-down=>值应该是{1,2,3,4,5,6,1,2}
E1=sheep
E2==CountIf($B:$B,$E$1)
=>6
E3={=Average(如果($B:$B=$E$1)*($C:$C1.55
E3={=Average(如果($B:$B=$E$1)*($C:$C>$E$2/3)*($C:$C1.85
E3={=Average(如果($B:$B=$E$1)*($C:$C>2*$E$2/3),$A:$A))
=>1.75
如果我没记错的话,数组公式的输入方式与普通公式相同(不包括自动输入的{}
),但在完成时按Ctrl键(可能还有Shift键)
注意-这些可以查看整个列。您可以通过将$A:$A
更改为$A$2:$A$12
(对于$B:$B
和$C:$C
)来加速它们的速度。请记住,对于附加到此列表中的任何数据,您都需要更新公式;但您可以将数据插入列表的中间,它将自动更新这些公式。添加一列以累积计算您正在查看的单词的实例,然后在平均值中检查该行号
C2==CountIf($B$2:$B2,$B2)
和fill-down=>值应该是{1,2,3,4,5,6,1,2}
E1=sheep
E2==CountIf($B:$B,$E$1)
=>6
E3={=Average(如果($B:$B=$E$1)*($C:$C1.55
E3={=Average(如果($B:$B=$E$1)*($C:$C>$E$2/3)*($C:$C1.85
E3={=Average(如果($B:$B=$E$1)*($C:$C>2*$E$2/3),$A:$A))
=>1.75
如果我没记错的话,数组公式的输入方式与普通公式相同(不包括自动输入的{}
),但在完成时按Ctrl键(可能还有Shift键)
注意-这些可以查看整个列。您可以通过将$A:$A
更改为$A$2:$A$12
(对于$B:$B
和$C:$C
)来加速它们的速度。请记住,对于附加到此列表中的任何数据,您都需要更新公式;但您可以将数据插入列表的中间,它将自动更新这些数据。使用以下公式:
=AVERAGE(INDEX(A:A,MATCH($D$2,B:B,0)+(D3-1)*COUNTIF(B:B,$D$2)/3):INDEX(A:A,MATCH($D$2,B:B,0)+((D3)*COUNTIF(B:B,$D$2)/3)-1))
这确实需要对ref列进行排序,并将类似的引用分组
即使未排序,此数组公式也将返回平均值:
=AVERAGE(INDEX(INDEX(A:A,N(IF({1},MODE.MULT(IF($B$1:$B$12=$D$2,ROW($A$1:$A$12)*{1,1}))))),N(IF({1},ROW(INDEX(A:A,1+(D3-1)*COUNTIF(B:B,$D$2)/3):INDEX(A:A,D3*COUNTIF(B:B,$D$2)/3))))))
退出编辑模式时,需要使用Ctrl-Shift-enter而不是enter键输入数组公式
使用如下公式:
=AVERAGE(INDEX(A:A,MATCH($D$2,B:B,0)+(D3-1)*COUNTIF(B:B,$D$2)/3):INDEX(A:A,MATCH($D$2,B:B,0)+((D3)*COUNTIF(B:B,$D$2)/3)-1))
这确实需要对ref列进行排序,并将类似的引用分组
即使未排序,此数组公式也将返回平均值:
=AVERAGE(INDEX(INDEX(A:A,N(IF({1},MODE.MULT(IF($B$1:$B$12=$D$2,ROW($A$1:$A$12)*{1,1}))))),N(IF({1},ROW(INDEX(A:A,1+(D3-1)*COUNTIF(B:B,$D$2)/3):INDEX(A:A,D3*COUNTIF(B:B,$D$2)/3))))))
退出编辑模式时,需要使用Ctrl-Shift-enter而不是enter键输入数组公式
好吧,假设有7只羊的值,你想做一个加权平均值(例如,第一个平均值将从前两只羊加上第三只羊的三分之一计算出来)
我尝试了将任意数量的动物划分为任意数量的分数并找到它们的平均值的一般解决方案。我的方法是使用@Barry Houdini的优雅重叠公式,并计算出间隔之间的重叠(在将7只动物划分为3只的情况下):
动物的数量呢
0 to 1
1 to 2
2 to 3
等等
在H4中
I4中的主要公式是
=IF(H4="","",SUM(TEXT(IF(C$2:C$16<H4,C$2:C$16,H4)-IF((C$2:C$16-1)>G4,C$2:C$16-1,G4),"general;\0")
*A$2:A$16*(B$2:B$16=$G$2))/(COUNTIF(B$2:B$16,$G$2)/$H$2))
=IF(H4=“”,”和(文本)(IF(C$2:C$16G4,C$2:C$16-1,G4),“一般;\0”)
*A$2:A$16*(B$2:B$16=$G$2))/(COUNTIF(B$2:B$16,G$2)/$H$2))
作为数组公式输入
通过改变H2中的数字,分数可以改变为一半、四分之一等。好吧,假设有7个羊值,你想做加权平均值(例如,第一个平均值将从前两个羊加上第三个羊的三分之一计算出来)
我尝试了将任意数量的动物划分为任意数量的分数并找到它们的平均值的一般解决方案。我的方法是使用@Barry Houdini的优雅重叠公式,并计算出间隔之间的重叠(在将7只动物划分为3只的情况下):
动物的数量呢
0 to 1
1 to 2
2 to 3
等等
在H4中
I4中的主要公式是
=IF(H4="","",SUM(TEXT(IF(C$2:C$16<H4,C$2:C$16,H4)-IF((C$2:C$16-1)>G4,C$2:C$16-1,G4),"general;\0")
*A$2:A$16*(B$2:B$16=$G$2))/(COUNTIF(B$2:B$16,$G$2)/$H$2))
=IF(H4=“”,”和(文本)(IF(C$2:C$16G4,C$2:C$16-1,G4),“一般;\0”)
*A$2:A$16*(B$2:B$16=$G$2))/(COUNTIF(B$2:B$16,G$2)/$H$2))
作为数组公式输入
分数可以通过更改H2中的数字来更改为一半、四分之一等。通过“前三分之一”您指的是最靠近工作表顶部的数值还是最大的数值??您希望平均值按其出现的顺序还是按值的升序排列?例如,对于绵羊,您希望平均的两个数字是1.8和1.3还是2.2和2.3?您希望平均值出现在何处?在每行的另一列中?还是输入“绵羊”和第1个1/3、第2个1/3等出现在3个单元格中?如果没有3个甚至三分之三呢?例如鹅?或者有7个绵羊值?我尝试了这个:AVERAGEIF(D6:D16,“绵羊”,C6:C16),它给出了所有绵羊的平均值,但我知道这不是你所问的…我要找的是物理上的前1/3,而不是v中最大的1/3