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(MATCH(2,1/(A$1:A1=A2)),"")

Для строки «1-й экземпляр» в столбце C попробуйте эту формулу в C1, скопированную вниз

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

Примечание: формулы возвращают не строго «номера строк», а относительные номера строк для ваших данных, т. е. строка 1 ваших данных возвращает 1 и т. д.

Связанный контент