【问题标题】:Excel Index Match Formula last changeExcel 索引匹配公式上次更改
【发布时间】:2017-03-24 03:13:19
【问题描述】:

我有一个专栏 U 和一个专栏 L
我需要得到的是在 U 列中搜索时 L 列的值。

    Column L          Column U  
      516               11  
      123               11   
      74                5  
      46                11
      748               21  
      156               11  
      189               21
      187               21

例如:
我想在 U 列中搜索 21,但我需要从最后一次更改中找到第一个值
(列中的数字保持不变)。
所以如果我想要属于 21 的值,我需要得到 189。

我尝试过(感谢 Scott Craner):
=INDEX($L:$L,AGGREGATE(14,6,ROW($U$10:$U$500)/($U$10:$U$500=D2),1))
但这让我得到了最后 21 个值,所以 187 作为答案。

有人知道怎么解决吗?

【问题讨论】:

  • 我似乎没有正确理解你想用公式实现什么,在你上面的例子中,21 的第一个值是748,不是吗?
  • 澄清一下 - 你想在Column L 中找到与Column U 中的第一个 实例相对应的数字(用于查找21,这将是748),或者如果存在相等值的列表(例如,每个值旁边有两个 21s底部的其他,你想返回这个列表的顶部,189)?
  • 那么您在不同的列中有日期或其他信息来显示这些信息是如何分组的?
  • 对于任何误解,我深表歉意。我正在寻找@SteveEs 所说的“最后一组值的最高值”。 Jeeped 的回答似乎可以解决问题。

标签: excel excel-formula formula


【解决方案1】:

您需要在 U 列中找到具有 D2 值的最后一行,其中紧接其上方的行不是相同的值。

=INDEX(L:L, AGGREGATE(14,6,ROW(U$10:U$500)/((U$10:U$500=D2)*(U$9:U$499<>D2)),1))

现在把 U15 改成另一个 21。结果变成了,

对于 L 和 U 列(从第 10 行开始)中的动态值数量,请使用,

=INDEX(L:L, AGGREGATE(14,6,ROW(U$10:INDEX(U:U, MATCH(1E+99, U:U)))/((U$10:INDEX(U:U, MATCH(1E+99, U:U))=D2)*(U$9:INDEX(U:U, MATCH(1E+99, U:U)-1)<>D2)),1))

【讨论】:

  • 这是我尝试做的更好的版本。
  • 是的... TBH,我有点不知所措,但我在测试自己的公式时用它作为检查,结果总是正确的。
【解决方案2】:

如果我理解正确,我相信这可以完成任务:

=INDEX($L:$L,MATCH(INDEX($L:$L,AGGREGATE(14,6,ROW($U$9:INDIRECT("$U$"&MATCH(INDEX($L:$L,AGGREGATE(14,6,ROW($U$10:$U$500)/($U$10:$U$500=D2),1)),$L:$L,0)))/($U$9:INDIRECT("$U$"&MATCH(INDEX($L:$L,AGGREGATE(14,6,ROW($U$10:$U$500)/($U$10:$U$500=D2),1)),$L:$L,0))<>D2),1)),$L:$L,0)+1)

它建立在 Scott 的概念之上,找到 187,然后将搜索数​​组限制在找到 187 的行,并找到最后一行没有您要搜索的数字 (21)。然后它索引之后的第一行,这将是最后一个系列中的第一个匹配项。

【讨论】:

    猜你喜欢
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 2023-03-12
    • 2017-10-04
    • 2017-03-22
    • 2017-11-04
    相关资源
    最近更新 更多