Excel索引匹配公式最后更改

时间:2017-03-23 15:23:30

标签: excel excel-formula formula

我有一列U和一列L 我需要得到的是在U列中搜索时L列的值。

    Column L          Column U  
      516               11  
      123               11   
      74                5  
      46                11
      748               21  
      156               11  
      189               21
      187               21

例如:
我想在U列中搜索21,但我需要找到最后一次更改的第一个值 (该列中的数字保持不变) 因此,如果我想要属于21的值,我需要获得189。

我尝试过(感谢Scott Craner):
       =INDEX($L:$L,AGGREGATE(14,6,ROW($U$10:$U$500)/($U$10:$U$500=D2),1))
但这让我得到了最后的21个值,所以187就是答案。

有人知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

如果我理解正确,我相信这可以完成任务:

=INDEX($L:$L,MATCH(INDEX($L:$L,AGGREGATE(14,6,ROW($U$9:INDIRECT("$U$"&MATCH(INDEX($L:$L,AGGREGATE(14,6,ROW($U$10:$U$500)/($U$10:$U$500=D2),1)),$L:$L,0)))/($U$9:INDIRECT("$U$"&MATCH(INDEX($L:$L,AGGREGATE(14,6,ROW($U$10:$U$500)/($U$10:$U$500=D2),1)),$L:$L,0))<>D2),1)),$L:$L,0)+1)

它建立在Scott的概念之上,并找到187,然后将搜索数​​组限制在它找到187的行,并找到没有你要搜索的数字的最后一行(21)。然后它为此后的第一行编制索引,这将是最后一个系列中的第一个匹配。

enter image description here

答案 1 :(得分:2)

您需要使用D2中的值找到U列中的最后一行,其中紧邻其上方的行不是相同的值。

=INDEX(L:L, AGGREGATE(14,6,ROW(U$10:U$500)/((U$10:U$500=D2)*(U$9:U$499<>D2)),1))

enter image description here

现在将U15更改为另一个21.结果变为,

enter image description here

对于列L和U中的动态数量的值(从第10行开始),请使用

=INDEX(L:L, AGGREGATE(14,6,ROW(U$10:INDEX(U:U, MATCH(1E+99, U:U)))/((U$10:INDEX(U:U, MATCH(1E+99, U:U))=D2)*(U$9:INDEX(U:U, MATCH(1E+99, U:U)-1)<>D2)),1))