根据给定的条件返回列中最大的值(和相应的标签)

所以我有一个三栏的Excel表格: 价值($ M)合同名称年份 [合同奖]。

数据的图像: 合同价值,名称,年份数据

我正在尝试将合同的合同名称返回为3个最大值。 我在这里find了解决办法。

=INDEX($B$2:$B$21,MATCH(1,INDEX(($A$2:$A$21=LARGE($A$2:$A$21,E2))*(COUNTIF(E2,$B$2:$B$21)=0),),))

不过,我还有一个额外的警告:我只想从2017年开始签订合同。我发现了使用CSE公式从2017年开始提供价值的解决scheme,并相应地调整了公式:

{=INDEX($B$2:$B$21,MATCH(1,INDEX(($A$2:$A$21=LARGE(IF($C$2:$C$21=2017,$A$2:$A$21),E2))*(COUNTIF(E2,$B$2:$B$21)=0),),))}

当我将其纳入公式时,它只适用于从2017年起只返回前3个值的工作,但由于2017年前3个值之一是2015年值的重复,因此从2015年开始合同名称。

结果图片: 结果

如上图所示,它从2015年起以1亿美元的价格拉动“合约1” ,而从2017年起以1亿美元的速度拉动“合约8” 。 任何想法如何调整我的公式只从2017年拿起合同名称? 提前致谢!

尝试添加一个帮手列来获得您的结果。

我在包含公式的列A中插入一个帮助列

=IF($D2=2017,COUNTIF($B$2:$B$21,">="&$B2),"")

其中$B$2:$B$21价值($ M)中的全部数据列, $B2价值($ M)下的第一个单元格, 2017年是您要提取数据的年份,如所须。 将该公式向下拖动到帮助程序列的整个长度。
注意:如果你想要拉的年份可以改变,可以考虑增加一个专门用于持有所需年份的单元格。 这个单元格将在我build议的公式中取代2017年。

然后在$G$1input以下公式:

=INDEX($B$2:$C$21,MATCH(SMALL($A$2:$A$21,$F2),$A$2:$A$21,0),2)

在这里, $B$2:$B$21价值数据的全列($ M)$F2Rank下的数值1, $A$2:$A$21是数据的完整列帮手列。 将这个公式向下拖动到Rank中的另外两行。

然后,您可以使用列H中的相同公式,但只将公式的最后2更改为1 ,如下所示:

=INDEX($B$2:$C$21,MATCH(SMALL($A$2:$A$21,$F2),$A$2:$A$21,0),1)

如果最后在同一年有多个合同,具有完全相同的价值($ M) ,则将按排名顺序将其排列在列表中。

使用助手列来查找排名值

您可以在单元格F2使用此公式。 不需要帮手栏。

 =INDEX($B$2:$B$21,MATCH(LARGE(IF($C$2:$C$21=2017,$A$2:$A$21,0), ROW()-1), IF($C$2:$C$21=2017,$A$2:$A$21,0), 0),1) 

由于这是一个数组公式,请用CTRL + SHIFT + ENTER确认。

在这里输入图像说明