使用excel中的内置函数查找列中的最后一个匹配项

时间:2014-04-21 20:36:34

标签: excel excel-vba excel-formula vba

我有一个excel工作簿,其中包含多个具有相同客户端ID的实例。因此,客户端可以在列表中出现多次。我想找到客户端ID的最后一个(最接近底部)实例,这样我就可以查看同一行以获取更多信息。 VLOOKUP显示了第一个实例,我需要最后一个实例。

那么,如何使用内置函数找到给定客户端ID的最后一个实例?我宁愿不写宏来做这件事。

1 个答案:

答案 0 :(得分:20)

假设您要在范围"id_1"中找到身份A2:A8的最后一个实例,并从范围B2:B8返回相应的值,然后使用:

=LOOKUP(2,1/(A2:A8="id_1"),B2:B8)

enter image description here


如果您想要返回范围"id_1"中内容A2:A8的最后一个内容的 index ,请使用:

=MATCH(2,1/(A2:A8="id_1"))

带数组条目( CTRL + SHIFT + ENTER )。

如果您想要返回身份"id_1"的最后一个内容的行号,请使用:

=LOOKUP(2,1/(A2:A8="id_1"),ROW(A2:A8))

此语法是一个特殊技巧:(A2:A8="id_1")计算结果为{TRUE,FALSE,FALSE,TRUE,...}。接下来,假设TRUE=1FALSE=0,部分1/{TRUE,FALSE,FALSE,TRUE,...}会为您提供{1,#DIV0!,#DIV0!,1,..}

返回结果数组lookup_value中的最后一个数字应该大于lookup_array中的任何值(在我们的例子中为{1,#DIV0!,#DIV0!,1,..})。由于数组仅包含1#DIV0!,因此我们可以将2作为lookup_value,因为它始终大于1