使用反向索引匹配如何在Excel中查找值的所有出现

时间:2017-06-27 18:28:19

标签: excel vba excel-vba

我在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的任何解决方案持开放态度,包括那些重新格式化数据的解决方案。

1 个答案:

答案 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的值来自大号。

enter image description here

现在你翻了数据:

=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))

enter image description here