【问题标题】:excel: lookup a range for a key, find multiple matches, return the last matchexcel:查找键的范围,查找多个匹配项,返回最后一个匹配项
【发布时间】:2016-12-24 06:47:21
【问题描述】:

在下面的示例中,A 列包含键和 B 列包含值。

我想找钥匙 "aaa",并返回最后一个匹配的值:"aug"。

在这种情况下,“aaa”键有 3 个实例,但是 可能只是 1 个实例,或许多(未知)数量的“aaa” 键。我总是对最后一场比赛感兴趣。

不能添加其他列。列未排序。

vlookup() 返回第一个匹配项(“jan”),我无法使其与其他函数一起工作以返回最后一个匹配项。

谢谢。

           A     B     C    ...

        +-----+-----+
  1     | aaa | jan |
        +-----+-----+
  2     |  b  | feb |
        +-----+-----+
  3     |  c  | mar |
        +-----+-----+
  4     | aaa | apr |
        +-----+-----+
  5     |  d  | jun |
        +-----+-----+
  6     |  e  | jul |
        +-----+-----+
  7     | aaa | aug |
        +-----+-----+
  8     |  f  | sep |
        +-----+-----+
  9     |  g  | oct |
        +-----+-----+

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    =LOOKUP(1,0/(A1:A9="aaa"),B1:B9)

    问候

    【讨论】:

      【解决方案2】:

      请写出下面的数组公式。

      =index(B1:B9, max(if(a1:a9="aaa", row(a1:a9))))

      然后按ctrl + shift + 回车

      【讨论】:

      • 如果范围不是从第 1 行开始怎么办?例如,如果我们将范围 A1:A9 和 B1:B9 更改为例如,您的公式会给出什么? E6:E14 和 F6:F14?
      • @XORLX,在您的情况下需要indirect()。数组公式类似于=index(F6:F14, max(if(E6:E14="aaa", row(indirect("1:"&rows(E6:E14)) ))))。事实上,你的回答给了我新的一课。谢谢。
      • 实际上不需要使用 volatile INDIRECT。您需要考虑如何概括您的解决方案,以便将正确的参数传递给 row_num 的 INDEX,
      • @XORLX,为了避免 volatile 函数,我试试=INDEX(F6:F14,MAX(IF(E6:E14="aaa",ROW(INDEX(A:A,1):INDEX(A:A,COUNTA(E6:E14))))))
      • 为什么不简单地 =INDEX(F:F,MAX(IF(E6:E14="aaa",ROW(E6:E14))))?关键是您发布的公式几乎就在那里;只是您需要调整以考虑 INDEX 中的 row_num 参数。如果我们坚持只引用指定行的设置(例如在 Excel 表中),那么 =INDEX(F6:F14,MAX(IF(E6:E14="aaa",ROW(E6:E14)-最小(行(E6:E14))+1)))。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      相关资源
      最近更新 更多