我在excel中有一个数据矩阵,其中包含大约50到2000之间的大量值。我试图找到表中的200个最大值(使用LARGE()函数找到),然后对于这200个最大值中的每一个,返回每个值的边际值。我发现了一个执行此功能here的函数。它返回一个带有边际值的字符串,但是当它们是要搜索的值的多个实例时,它只返回相同的值。我将如何查找所有200个值的所有实例?以下是数据外观的示例。
| 1 2
---------
1 |10 12
2 |12 14
3 |11 13
4 |2 12
5 |9 14
6 |10 12
7 |15 9
8 |15 16
使用大函数查找前5个值(16,15,15,14和14)后,需要返回以下内容:
9-2
8-1
9-1
2-2
5-2
非常感谢任何帮助。不想使用VBA,而是使用Excel内置的功能,但我对使用Excel的任何解决方案持开放态度,包括那些重新格式化数据的解决方案。
答案 0 :(得分:1)
如果您可以保证在同一列中不会重复任何值,则:
=INDEX($1:$1,AGGREGATE(15,6,COLUMN($B$2:$J$3)/($B$2:$J$3=L1),COUNTIF($L$1:L1,L1)))&" - "&INDEX(A:A,AGGREGATE(15,6,ROW(INDEX($A$1:$J$3,0,AGGREGATE(15,6,COLUMN($B$2:$J$3)/($B$2:$J$3=L1),COUNTIF($L$1:L1,L1))))/(INDEX($A$1:$J$3,0,AGGREGATE(15,6,COLUMN($B$2:$J$3)/($B$2:$J$3=L1),COUNTIF($L$1:L1,L1)))=L1),1))
其中L1:L5的值来自大号。
现在你翻了数据:
=INDEX(A:A,AGGREGATE(15,6,ROW($B$2:$C$9)/($B$2:$C$9=L1),COUNTIF($L$1:L1,L1)))&" - "&INDEX($1:$1,AGGREGATE(15,6,COLUMN(INDEX($A$1:$C$9,AGGREGATE(15,6,ROW($B$2:$C$9)/($B$2:$C$9=L1),COUNTIF($L$1:L1,L1)),0))/(INDEX($A$1:$C$9,AGGREGATE(15,6,ROW($B$2:$C$9)/($B$2:$C$9=L1),COUNTIF($L$1:L1,L1)),0)=L1),1))