将相邻数据显示在范围内的最大值,同时包括重复数据

时间:2016-04-12 01:13:37

标签: excel excel-formula

我正在尝试获取范围内最大值的每个实例,并显示与每个实例关联的五个相邻数据列。

Sample

我能够使用这个获取最大的数据:

=IFERROR(LARGE($A$3:$A$100,ROW(1:1)),"NONE")

不幸的是,我无法弄清楚如何获取与下一个重复值实例相关的相邻数据。

注意:

  • 存档表按升序排列,因为这是我可以考虑的唯一方法,可以轻松复制和粘贴最新数据。

2 个答案:

答案 0 :(得分:0)

步骤1)

将你的大函数与你的源范围中的最大值进行比较,如果它小于max display none,否则显示最大值

步骤2)

由于您的数据按升序排序,因此找到最大值的第一个实例范围内的位置。

=MATCH(MAX($A$3:$A$18),$A$3:$A$18,0)

我们将使用它来返回相邻列中的相应值,方法是将其替换为要返回的每列的索引公式

=INDEX(B$3:B$18,MATCH(MAX($A$3:$A$18),$A$3:$A$18,0))

将上述内容放在I3中并将其复制到右侧

步骤3)

由于您的数据按顺序排序,这意味着最大值A列中的下一行将仍然是最大值或列表的结尾。对于每个连续的行,匹配值需要增加1,并且需要一些错误处理

因此我们可以使用第3行中的公式并按如下方式进行调整:

=IFERROR(INDEX(B$3:B$18,MATCH(MAX($A$3:$A$18),$A$3:$A$18,0)+1),"NONE")

OR

=IF(H4="NONE","NONE",INDEX(B$3:B$18,MATCH(MAX($A$3:$A$18),$A$3:$A$18,0)+1)

然后将+1更改为+2然后+3等等,但是由于我们不知道哇多次这个过程将完成,我们可以使用您开始的行引用并更改公式如下:

=IFERROR(INDEX(B$3:B$18,MATCH(MAX($A$3:$A$18),$A$3:$A$18,0)+(row()-3)),"NONE")

OR

=IF(H4="NONE","NONE",INDEX(B$3:B$18,MATCH(MAX($A$3:$A$18),$A$3:$A$18,0)+(ROW()-ROW($A$3))))

-3是第一行数据的硬编码值,也可以更改为-ROW(A3),其中A3是新表格第一行中的单元格。

ERROR CORRECTION

我在匹配公式中的匹配部分添加了行凹凸。这是一个错误。添加+ 1,+ 2或任何需要添加到匹配公式结果但仍在索引公式中的内容。我已更新上面的公式以反映这一点。

答案 1 :(得分:0)

如果您不想使用排序顺序,只需在H3使用此数组公式,然后将其自动填充到M8

=IFERROR(INDEX($A$3:$F$18,SMALL(IF($A$3:$A$18=MAX($A$3:$A$18),ROW($1:$16)),ROW(A1)),COLUMN(A1)),"NONE")
  

这是一个数组公式,必须使用Ctrl + Shift + Enter确认!

如果您还有任何疑问,请询问;)

修改

核心是IF($A$3:$A$18=MAX($A$3:$A$18),ROW($1:$16)),它返回行数组False,如{FALSE,2,FALSE,FALSE,5,FALSE.....}。知道SMALL忽略FALSE,您会在SMALL(...,1)第一行获得最大值。 (这种方式SMALL(...,2)将输出第二行.....)。

使用ROW(A1)COLUMN(A1)作为非静态引用,您获得k的{​​{1}}和我们SMALL的列:)