Excel:如何返回包含特定字符串的最后一行号?

Excel:如何返回包含特定字符串的最后一行号?

在 Excel 中,是否有一个 Excel 公式可用于填充 B 列(在下面的示例中),该公式将返回当前行之前包含特定字符串的最后一行号?

数据不连续。
例如,数据可能是:

   |  A (value)    B (prev recent instance)
----------------------------------------------
 1 |  Mike
 2 |  John
 3 |  Mike         1
 4 |  Tony         
 5 |  Mike         3
 6 |  John         2

然后我想将其扩展为 C 列来显示最早的实例。

这看起来与这个问题非常相似: 什么 Excel 公式可以返回包含特定数据的范围内单元格的最后一行号?,但是该问题和答案要求数据是连续的。

编辑: 我希望答案是一个工作表公式,但如果您认为通过 VBA 实现更合适,请在您的答案中也包含它,并说明每种方法的优缺点。

答案1

为了找到最早的实例,下面提到的公式是:-

=LOOKUP(2,1/(A:A=A2),ROW(A:A))

为了让您更好地理解,以下是屏幕截图

在此处输入图片描述

答案2

假设你的数据从 A1 开始,在 B2 中尝试这个“数组公式”

=IF(COUNTIF(A$1:A1,A2),MATCH(2,1/(A$1:A1=A2)),"")

按 CTRL+SHIFT+ENTER 确认并复制下来

或者你可以使用这个非数组版本

=IF(COUNTIF(A$1:A1,A2),MATCH(2,INDEX(1/(A$1:A1=A2),0)),"")

在 Excel 2007 或更高版本中,您可以使用 IFERROR 简化,即数组版本变为

=IFERROR(MATCH(2,1/(A$1:A1=A2)),"")

对于 C 列中的“第一个实例”行,请尝试在 C1 中向下复制此公式

=MATCH(A1,A$1:A1,0)

注意:公式并不严格返回“行号”,而是返回数据的相对行号,即数据第 1 行返回 1 等等。

相关内容