【问题标题】:MATCH or VLOOKUP starting from the end of the range从范围末尾开始的 MATCH 或 VLOOKUP
【发布时间】:2012-03-06 16:58:34
【问题描述】:

我有一张像这样的表

 A      B    
ID1  data 123
ID2  data 234
ID1  data 456
ID2  data 567

我正在尝试找到检索 ID2 的 data 567 的最佳方法。 在 ID2 上使用 MATCH(选项 0)或 VLOOKUP(选项 FALSE)可以让我访问第一条记录,但我想检索最后一条记录。

我正在使用 Excel 2010。

ps:我宁愿不使用 VBA 或操作数据(排序...)。

【问题讨论】:

    标签: excel worksheet-function


    【解决方案1】:

    A1:B4 和 D1="ID2" 中的数据,尝试在 E1 中输入:

    =LOOKUP(2,1/(A1:A4=D1),B1:B4)
    

    注意:如果查找值大于查找范围内的任何值,LOOKUP 将返回最后一个值。任何错误都会被忽略。

    【讨论】:

    • 这非常酷 :-) 虽然我不确定我是否理解 1/(A1:A4=D1) 技巧...
    • @assylias,它创建一个数组,对于匹配 ID 的行具有 1 (TRUE),对于不匹配的行具有错误 (#DIV/0!)。 Lookup 忽略错误。数组如下所示: {#DIV/0!;1;#DIV/0!;1} 并且由于查找值 2 大于 1(这是该数组可以具有的最大值),因此它返回最后一个项目。
    • 如果查找值小于查找范围内的任何值,有谁知道如何返回最后一个值?
    【解决方案2】:

    我知道问题已经得到解答,但如果有人感兴趣,这里是多重标准向后查找的公式。 =LOOKUP(2,1/(--(A1:A4=D1)*--(C1:C4=D2)),B1:B4)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 2014-12-25
      相关资源
      最近更新 更多