[英]Excel find last match from two tables
我正在寻找一种方法来查找A,B列中条目的最后一个实例,并从列C,D中获取相应的值
在下面的示例中,Henry的值是1374,Amy的值是1124
Name1对应于Value1,Name2对应于Value2。 是否有一个公式可以从Name1和Name2列中找到最后一个条目,并返回相应的Value1或Value2
粘贴的原始数据如下:
Name1 Name2 Value1 Value2
Sara Amy 1265 1241
John Sara 1142 1214
Amy Henry 1295 1121
Amy John 1175 1323
Sara John 1085 1251
Sara Henry 1242 1374
Amy Sara 1124 1055
假设:
数据网格位于单元格A1:D8
。 值“Henry”和“Amy”分别在单元格A10
和A11
。
公式实施:
在单元格B10
中实施以下公式。
备选方案1:
=INDEX($C$2:$D$8,MAX(IFERROR(LOOKUP(2,1/($A$2:$A$8=A10),ROW($A$2:$A$8)),-1),IFERROR(LOOKUP(2,1/($B$2:$B$8=A10),ROW($B$2:$B$8)),-1))-1,IF(IFERROR(LOOKUP(2,1/($A$2:$A$8=A10),ROW($A$2:$A$8)),-1)>IFERROR(LOOKUP(2,1/($B$2:$B$8=A10),ROW($B$2:$B$8)),-1),1,2))
备选方案2(略短于1):
=INDEX($C$2:$D$8,LOOKUP(2,1/SEARCH(A10&",",$A$2:$A$8&","&$B$2:$B$8&",",1),ROW($A$2:$A$8))-1,IF(IFERROR(LOOKUP(2,1/($A$2:$A$8=A10),ROW($A$2:$A$8)),-1)>IFERROR(LOOKUP(2,1/($B$2:$B$8=A10),ROW($B$2:$B$8)),-1),1,2)).
要尽可能地复制下来。
注意MAX()
函数后的-1值,用于调整行号。 考虑到数据从第n行开始,它应该总是n-1。
我一直在努力记住另一种我见过2d查找的方法(我找不到链接了)。 它基本上就是这样
=INDIRECT(TEXT(MAX((ROW($A$2:$B$8)*100+COLUMN($A$2:$B$8))*($A$2:$B$8=A10))+2,"R0C00"),FALSE)
使用Ctrl Shift Enter作为数组公式输入 。
因此,我们的想法是从名称的最后一次出现的行和列生成一个数字(因此对于Henry来说,它将是702)。
您将其格式化为R7C02并将其输入到间接,以RC表示法提供对单元格的引用。 列加2给出了您想要的单元格。
您可能会注意到,如果列> 99,则会失败,但您可以根据需要调整乘数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.