根据给定的条件

时间:2017-09-29 21:55:44

标签: excel

所以我有一张包含三列的Excel表格:价值($ M)合约名称,以及年度 [合约奖励] 。

数据图片:Contract Value, Name, Year Data

我正在尝试使用3个最大值返回合同的合同名称。我找到了here的解决方案。

=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 here中提取值的解决方案,并相应地调整了公式:

{=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年开始收取合同名称

结果图片:Results

如上图所示,它从2015年开始以1亿美元的价格提取&#34;合同1&#34; ,而不是&#34;合同8&#34; < / em>从2017年以1亿美元。知道如何调整我的公式只能从2017年开始收取合同名称吗?提前谢谢!

2 个答案:

答案 0 :(得分:0)

尝试添加帮助列以获得结果。

我在 A列中插入了一个辅助列,其中包含公式

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

其中$B$2:$B$21值($ M)中的完整数据列,$B2值($ M), 2017 是您提取数据的年份,因此请根据需要进行调整。将此公式拖动到辅助列的整个长度。
旁注:如果您想要换的年份可以更改,请考虑添加一个专用单元,用于保存请求的年份。然后,此单元格将替换我建议的公式中的 2017

然后在$G$1中输入以下公式:

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

其中,$B$2:$B$21值($ M)中的完整数据列,$F2排名,$A$2:$A$21是帮助列中的完整数据列。将此公式向下拖动到排名中的其他两行。

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

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

如果您最终在同一年内拥有完全相同的价值($ M)的多个合约,那么它会按照排名顺序将它们放入其中列表第一。

Using a helper column to find rank values

答案 1 :(得分:0)

您可以在单元格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确认。

enter image description here