我有一组excel数据如下;
A B C D E
0 0 0.510678961 3 1
0 1 0.582611161 15 1
0 2 0.274447714 2 1
0 3 0.258144341 2 1
0 4 0.574404811 11 1
0 5 0.330260801 2 1
0 6 0.252972823 2 1
0 7 0.536704433 2 1
0 8 0.563287425 2 1
0 9 0.469793466 32 1
0 10 0.504253272 5 1
0 11 0.509408549 36 4
0 12 0.539940366 54 1
0 13 0.472334971 6 1
0 14 0.423524875 2 1
0 15 0.254872928 13 1
0 16 0.231080412 8 1
0 17 0.39818992 22 1
0 18 0.545173384 4 1
0 19 0.280489713 9 1
0 20 0.280509697 6 1
0 21 0.560193886 6 1
0 22 0.485332134 8 2
0 23 0.481483179 3 1
0 24 0.496115634 29 4
0 25 0.466198213 2 1
0 26 0.552777113 5 1
0 27 0.240848653 6 1
0 28 0.30456948 17 2
0 29 0.315246183 6 1
1 0 0.510678961 3 1
1 1 0.254872928 15 1
1 2 0.274447714 2 1
1 3 0.258144341 40 1
1 4 0.231080412 11 1
1 5 0.330260801 2 1
1 6 0.252972823 2 1
1 7 0.536704433 2 1
1 8 0.563287425 2 1
1 9 0.469793466 32 1
1 10 0.504253272 5 1
1 11 0.509408549 36 4
1 12 0.539940366 54 1
1 13 0.472334971 6 1
1 14 0.423524875 2 1
1 15 0.254872928 13 1
1 16 0.231080412 8 1
1 17 0.39818992 22 1
1 18 0.545173384 4 1
1 19 0.280489713 9 1
1 20 0.280509697 6 1
1 21 0.560193886 6 1
1 22 0.485332134 8 2
1 23 0.481483179 3 1
1 24 0.496115634 29 4
1 25 0.466198213 2 1
1 26 0.552777113 5 1
1 27 0.240848653 6 1
1 28 0.30456948 17 2
1 29 0.315246183 6 1
2 0 0.510678961 3 1
2 1 0.254872928 15 1
2 2 0.274447714 2 1
2 3 0.258144341 40 1
2 4 0.231080412 11 1
2 5 0.330260801 2 1
2 6 0.252972823 2 1
2 7 0.536704433 2 1
2 8 0.386891594 2 1
2 9 0.469793466 32 1
2 10 0.504253272 5 1
2 11 0.509408549 5 1
2 12 0.539940366 54 1
2 13 0.472334971 6 1
2 14 0.423524875 2 1
2 15 0.254872928 13 1
2 16 0.231080412 8 1
2 17 0.39818992 22 1
2 18 0.545173384 4 1
2 19 0.280489713 9 1
2 20 0.280509697 6 1
2 21 0.231080412 6 1
2 22 0.485332134 8 2
2 23 0.481483179 3 1
2 24 0.496115634 29 4
2 25 0.466198213 2 1
2 26 0.552777113 5 1
2 27 0.240848653 6 1
2 28 0.30456948 5 2
2 29 0.315246183 6 1
3 0 0.510678961 3 1
3 1 0.254872928 15 1
3 2 0.274447714 2 1
3 3 0.258144341 40 1
3 4 0.231080412 11 1
3 5 0.330260801 2 1
3 6 0.252972823 2 1
3 7 0.536704433 2 1
3 8 0.386891594 2 1
3 9 0.469793466 32 1
3 10 0.504253272 5 1
3 11 0.509408549 17 1
3 12 0.539940366 54 1
3 13 0.472334971 6 1
3 14 0.423524875 2 1
3 15 0.254872928 13 1
3 16 0.231080412 76 1
3 17 0.39818992 22 1
3 18 0.231080412 4 1
3 19 0.280489713 9 1
3 20 0.280509697 6 1
3 21 0.231080412 6 1
3 22 0.485332134 8 2
3 23 0.481483179 3 1
3 24 0.496115634 29 4
3 25 0.466198213 2 1
3 26 0.231080412 5 1
3 27 0.240848653 6 1
3 28 0.30456948 5 2
3 29 0.315246183 6 1
.................................
我需要为每组30个值找到C列中最小的10个数字,并从D列中获取它们的相应值,并从D列中找到这10个值的平均值。必须对每个值重复30行,最多100集。
我尝试过SMOOK的VLOOKUP。但我的要求似乎过于复杂,以至于无法得到正确的答案。我非常感谢你的帮助。提前谢谢。
答案 0 :(得分:2)
如果=AVERAGEIFS(colD,colA,G2,colC,"<="&AGGREGATE(15,6,1/(1/((colA=G2)*colC)),10))
包含所需的组号(来自ColumnA),则以下公式应该有效:
AGGREGATE
DIV/0
函数将从相应组中的值数组返回第十个最小值,如果不是1/(1/(...
错误,则返回AGGREGATE
错误。{{1}}产生错误该数组中的值(由{{1}}忽略)。
根据您发布的数据,我得到以下结果:
注意:如果每组中最小的10个值中存在重复项,则平均值将超过10个值。如果有重复,请考虑一下您想要发生的事情。
答案 1 :(得分:1)
好的,这很棘手,但我认为这可以通过简单的公式来完成:
添加到单元格 F1 :
=IF($B1=0,SMALL(OFFSET(INDIRECT(CONCAT("$C",ROW()-MOD(ROW(),30)+1),TRUE),0,0,30),$B1+1),IF($B1<10,SMALL(OFFSET(INDIRECT(CONCAT("$C",ROW()-MOD(ROW(),30)+1),TRUE),0,0,30),$B1+1),""))
添加到单元格 G1 :
=IF($F1<>"",VLOOKUP($F1,OFFSET(INDIRECT(CONCAT("$C",ROW()-MOD(ROW(),30)+1),TRUE),0,0,30,2),2,FALSE),"")
添加到单元格 H1 :
=IF(B1=0,AVERAGE($G1:$G10),"")
如果你填写整张表,它应该做你想要的。例如,范围1:30将如下所示......
A B C D E F G H
0 0 0.510678961 3 1 0.231080412 8 7.1
0 1 0.582611161 15 1 0.240848653 6
0 2 0.274447714 2 1 0.252972823 2
0 3 0.258144341 2 1 0.254872928 13
0 4 0.574404811 11 1 0.258144341 2
0 5 0.330260801 2 1 0.274447714 2
0 6 0.252972823 2 1 0.280489713 9
0 7 0.536704433 2 1 0.280509697 6
0 8 0.563287425 2 1 0.30456948 17
0 9 0.469793466 32 1 0.315246183 6
0 10 0.504253272 5 1
0 11 0.509408549 36 4
0 12 0.539940366 54 1
// The latter 20 rows of each set of 30 will be blank in the computed column...
希望这会有所帮助,如果您愿意,我很乐意解释这是如何工作的