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 等。

相關內容