如何从Excel中的2列获取最高值?

时间:2014-12-22 09:41:34

标签: excel excel-vba excel-formula excel-2013 vba

我有一个设计软件,可以将数据提取到Excel工作表格式 输出分为2列,每列中的每列超过1000行。 为了利用这些数据,我需要将它总结为两列中最多的5个最高值。因此,这并不意味着它是一列的最大值及其对应的值,但它可能意味着第1列和第2列的第2大值。第2列的第4大值。

例如(如果我们引用了一些输出数据):

enter image description here

我应该选择的值是:

enter image description here

如果有任何可能的方法来实现这一目标,那就很棒了

谢谢..

示例文件:http://goo.gl/UIEFEv

示例文件2 http://goo.gl/VSvuVf

2 个答案:

答案 0 :(得分:3)

这是一个公式解决方案。我使用了20行并提取了每列包含前5行的行 - 您可以根据需要扩展到尽可能多的行。

使用A1中的数据:B20在D1中使用此公式,并使用 CTRL + SHIFT + ENTER 进行确认并复制到E1并向下复制列:

=IFERROR(INDEX(A$1:A$20,SMALL(IF(($A$1:$A$20>=LARGE($A$1:$A$20,5))+($B$1:$B$20>=LARGE($B$1:$B$20,5)),ROW(A$1:A$20)-ROW(A$1)+1),ROWS(D$1:D1))),"")

注意:只提取了八行,因为有些行包含两列中前五位的值。我在字母A和B中添加了突出显示以更清楚地说明

见下面的截图

enter image description here

修改

根据以下评论,您似乎需要包含该列最高值的行组合....以及总数 两者的行列。

在原始公式中,有两个条件与" +",即

相连

($A$1:$A$20>=LARGE($A$1:$A$20,5))+($B$1:$B$20>=LARGE($B$1:$B$20,5)

" +"为您提供"OR"类型功能,例如在这种情况下,如果单个值位于该特定列的前5位,则包括行。您可以添加其他条件,因此如果您还想添加前5个中考虑两个列总数的行,那么您可以添加另一个"子句",即。

($ A $ 1:$ A $ 20 - ; = LARGE($ A $ 1:$ A $ 20,5))+($ B $ 1:$ B $ 20 - ; = LARGE($ B $ 1:$ B $ 20,5 )的 +($ A $ 1:$ A $ 20±$ B $ 1:$ B $ 20 - ; = LARGE($ A $ 1:$ A $ 20±$ B $ 1:$ B $ 20,5)) < / p>

....并且在完整的公式中包括你得到这个版本:

=IFERROR(INDEX(A$1:A$20,SMALL(IF(($A$1:$A$20>=LARGE($A$1:$A$20,5))+($B$1:$B$20>=LARGE($B$1:$B$20,5))+($A$1:$A$20+$B$1:$B$20>=LARGE($A$1:$A$20+$B$1:$B$20,5)),ROW(A$1:A$20)-ROW(A$1)+1),ROWS(D$1:D1))),"")

您可以使用+*(对于AND)的组合进一步优化,例如对于新条件,您可能只想包含总数在前5位的行,如果其中一个单值在该列的前10位...

<强>解释

以上部分显示了如何将+用于OR条件。在公式中,如果这些条件是TRUE,则IF函数返回&#34;相对行号&#34;范围(使用ROW(A$1:A$20)-ROW(A$1)+1)。

SMALL函数然后提取第k个最小值,k由ROWS(D $ 1:D1)定义,在D1(或E1)中从1开始,每行递增1。

然后

INDEX函数从该行获取实际值。

当您用尽符合条件的行SMALL时,函数将返回#NUM!错误,IFERROR此处转换为空白

答案 1 :(得分:1)

问题有点不清楚,但如果你的意思是获得A列的5个最高值及其在B列中的相应值,那么B列中的五个最高值和A列中的相应值则为(非)自动化)解决方案非常简单。

  1. 点击其中带有标题标题的单元格。
  2. 点击&#39;数据&#39;在顶部菜单中。
  3. 点击&#39;过滤&#39;在&#39;排序&amp;过滤器&#39;部分。
  4. 点击A栏上的按钮 - 选择&#39;将最大排序为最小&#39;
  5. 从两列中获取前五个值,然后单击B列中的按钮并重复。