上次匹配的返回值

我需要一个公式来返回“文本”的最后一场比赛的数据的价值。 行号也是可以接受的。 macros不可接受。 名称列是未sorting的,不能sorting! 只有列“名称”被用作查找值。 我宁愿使用/多个帮助列而不是数组公式。

Row Name Data 1 Joe 10 2 Tom 20 3 Eva 30 4 Adam 40 5 Tom 21 

LARGE只适用于数字,VLOOKUP只返回第一个匹配。 LOOKUP只有有时才起作用,所以它也是。

所以如果我想要“汤姆”的最后一场比赛,那么它应该返回“21”。

数组公式可以通过辅助列来避免。 假设在F1中有匹配的名字(即Tom)在辅助列行C2中input

 =IF(A2<>$F$1,0,row()) 

然后复制你的数据公式。

现在列C包含0个不匹配的名字和匹配的行号。 最大化列产生解决scheme的行。 现在结果很简单,就是使用正确的偏移量和函数offset:

 =OFFSET(B1,max(C:C)-1,0) 

PS:我的excel的副本是意大利语,所以我无法testing这个公式的英文翻译。

我认为这是最简单的方法。

 =LOOKUP("Tom";A2:B7) 

用数组公式input一个列(用Ctrl + Shift + Enterinput):

 =VLOOKUP(MAX(IF($B$2:$B$6=B2, $A$2:A$6, 0)), $A$2:$C$6, 3, FALSE) 

为确保您做得对,请点击单元格,公式应显示在大括号({})中。

注意:这假定“行”在A1中。

我已经想出了一个解决scheme,但是它要求数据中的数字是并发的,像这样

 Name Data Joe 1 Tom 1 Eva 1 Adam 1 Tom 2 Tom 3 Eva 2 

但是,那好吧,因为我的数据看起来像那样。 所以,如果之前使用的名称,它必须是旧的最高+1又名并发。

名字是A1,数据是B1,这个公式进入C2:

 FLOOR(SQRT(2*SUMIF(A2:A7,A2,B2:B7)),1)