【问题标题】:find last match in column using built in functions in excel使用excel中的内置函数查找列中的最后一个匹配项
【发布时间】:2014-06-06 00:00:40
【问题描述】:

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

那么,如何使用内置函数找到给定客户端 ID 的最后一个实例?我宁愿不编写宏来执行此操作。

【问题讨论】:

    标签: excel excel-formula vba


    【解决方案1】:

    假设您想在A2:A8 范围内查找id "id_1" 的最后一个实例,并从B2:B8 范围内返回相应的值,然后使用:

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


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

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

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

    如果要返回 id "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

    【讨论】:

    • 我正在让它工作,但我不知道为什么。在我的公式向导中,2 被称为Lookup Value。公式中的2 是什么?另外,为什么1/... 是范围?
    • 这是一个特殊的技巧..(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
    • 哇!非常感谢,但我还是不太明白。有没有参考可以指点我?另外,这可以在 VLOOKUP 中使用吗?
    • 一般来说这个公式基于If the LOOKUP can not find an exact match, it chooses the largest value in the array that is less than or equal to the value.(来自here)。您也可以将这个技巧与MATCH 公式一起使用(如我上面的示例),但是它需要数组输入,我个人更喜欢LOOKUP
    • 关于Vlookup - 不,你不能这样做,但我认为我的第一个Lookup 公式涵盖了所有Vlookup 功能
    猜你喜欢
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    相关资源
    最近更新 更多