Excel 索引匹配公式上次更改

Excel Index Match Formula last change

我有一个列 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:$U0)/($U:$U0=D2),1))
但这让我得到了最后 21 个值,所以 187 作为答案。

有人知道怎么解决吗?

如果我理解正确的话,我相信这就完成了任务:

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

它基于 Scott 的概念,找到 187,然后将搜索数​​组限制在找到 187 的行,并找到没有您要搜索的数字 (21) 的最后一行。然后它索引之后的第一行,这将是最后一个系列中的第一个匹配项。

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

=INDEX(L:L, AGGREGATE(14,6,ROW(U:U0)/((U:U0=D2)*(U:U9<>D2)),1))

现在把U15改成另一个21,结果变成,

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

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