2015-12-02 125 views
-1

问题与标题中相同。需要注意的是LARGE(range, k)并没有告诉我的价值的位置,并试图寻找它使用INDEX可以在副本的存在失败。有另一种方法吗?如何在Excel中找到范围的第K个最大值的位置?

+1

所以你要的所有位置“使用索引可以在副本的存在失败寻找它”? – 2015-12-02 12:33:25

+0

解决方法是使用LARGE(range,k)和任意数量的可以在SO上找到的“返回多个结果”方法的组合。例如,在这里:http://stackoverflow.com/questions/26424226/excel-return-multiple-matching-values-from-a-column-horizo​​ntally-in-one-row –

+0

@RC:并非所有*的*他们,但我需要不同的地点为不同的k。 – Mehrdad

回答

-1

如果你使用一列,然后键入=IFERROR(RANG.eq(K2;"range of K")+SUMPRODUCT(--(K2=K$2:K$74"ex");--(K2<K$2:K$74));"")和一列=IFERROR(COUNTIFS(M2"new column":$M$74;M2)+M2-1;"")什么。 之后,以K所有数字将介于即使等于,你可以使用LARGE

1

根据原始数据和无论你是在一个位置,修改工作簿,一个方法是使用一个“助手列“来为您的数据添加一个非常小的行依赖值,例如行数除以1000000,从而为您提供唯一值。只要附加值不大于数据值中最小的真实差异,它就不会改变数据的排名顺序,但它确实使其具有独特性,并具有相对“简单”的优点。

screenshot from an Excel spreadsheet demonstrating this technique

在这个例子中B3:B17主要包含整数值,一对” 0.5" 级分,具有一定的重复。我已经将C3:C17设置为助手列,我在其中添加并调整行号* 0.0000001的值。由于真实数据中的最小步骤变化比最大调整值大得多,所以不存在不正确排序的风险 - 只有在原始数据完全相同的情况下,排序现在基于表格中的位置。

列F列出了最大的帮助器值(例如单元格F3公式"=LARGE($C$3:$C$17,E3)"),列G找到该值所在的行(单元格G3公式"=MATCH(F3,C:C,0)"),然后您的输出表使用此行数查找真正的数据。

+0

这是一个聪明的黑客,但你是否基本上说没有其他解决方案? – Mehrdad

+0

不,但它具有易于实施的好处,因为“排名调整”不会超出数据中所需的精度。 这真是一两个问题 - 从非唯一数据确定独特的名次,然后确定位置。 还有其他方法问题的第一部分不需要帮手列,如看芯片皮尔逊的网站[链接](http://www.cpearson.com/excel/Rank.aspx),但你仍然需要解决地点,我怀疑这是一个尴尬的部分。 –

相关问题