【问题标题】:Reverse Match Search in ExcelExcel 中的反向匹配搜索
【发布时间】:2018-03-10 09:28:52
【问题描述】:

我需要从右到左反向进行匹配/索引搜索

每个具有 x 我需要的单元格从右到左查找 x 所在的列并报告位置,然后可以转到该列的顶部并提取该数据。我基本上需要找出最后一个 X 在哪一列。

A         B        C        D    E          F      G      H      I       J
State   27-Aug  28-Aug  29-Aug  30-Aug  31-Aug  1-Sep   2-Sep   3-Sep   4-Sep
VI       X        X       X        X       X      X     

在上面的示例中,3 行 10 列,如果我想查看最后一个 X 在 G(7) 列中,那么我使用索引转到该列 (7),A 行到 1-sep 作为答案。

【问题讨论】:

  • =INDEX(1:1,1,COUNTIF(2:2,"X")-1) 假设没有间隙
  • @User91504 这是一个不错的选择,请将其作为答案。它可能适用于 OP,也可能不适用于 OP,但未来的读者可能会发现它很有用。
  • @ScottCraner 确定

标签: excel excel-formula match reverse


【解决方案1】:
=MATCH(2,IF(A2:J2="x",1,FALSE))

这是一个数组公式。 这将为您提供 x 的最后位置。然后,就像您指出的那样,将结果放入 INDEX 函数中,您应该会很好。我喜欢这个选项,因为我可以在 if 语句中放置任何条件,例如 >0。

【讨论】:

  • 此匹配不适用于未排序的数据,此处匹配的数据必须已排序。当第三个参数为 0 时,匹配适用于未排序的完全匹配。但是匹配找到第一个匹配
【解决方案2】:

试试

=INDEX(1:1,1,COUNTIF(2:2,"X")-1) 

假设 X 的流中没有间隙

【讨论】:

  • 列表中会有空白,所以我需要使用 Scott Craner 的解决方案
【解决方案3】:

这将找到最后一个有值的单元格,而不考虑值:

=INDEX($A$1:$J$1,MATCH("zzz",A2:J2))


如果您想找到最后一个X,无论其他单元格中是否存在什么,请使用以下公式:

=INDEX($A$1:$J$1,AGGREGATE(14,6,COLUMN(A2:J2)/(A2:J2="X"),1))

注意:这是一个数组类型的公式,会比之前的公式慢。如果你只有一个,它不会有所作为。如果你有数百个,你会看到不同。

但是,如果您在 X 之后还有其他文本字符串,并且您想要 X,那么这是可行的方法。

【讨论】:

  • 效果很好,非常感谢!!!我将在列中始终有一个 X,我可能在中间有几个空格,但这适用于中间的空格。再次感谢您对此的帮助!
  • @JoshuaGoodman 请通过单击答案旁边的复选标记将其标记为正确。
  • 仅供参考,我能够得到第一个工作答案 =INDEX($A$1:$J$1,MATCH("zzz",A2:J2))
  • 你能解释一下这是做什么的吗? COLUMN(A2:J2)/(A2:J2="X")
  • @ivan_pozdeev 那么你做错了。任何一个公式都会忽略差距。第一个将返回最后一个文本值的值。第二个将返回最后一个x 的值。您可能误解了如何使用该公式。也不在乎是否有差距。
猜你喜欢
  • 2021-12-01
  • 2012-12-20
  • 1970-01-01
  • 1970-01-01
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多