Возвращаемое значение последнего совпадения

Мне нужна формула, чтобы вернуть значение Data для последнего совпадения «Text». Номер строки также приемлем. Макро НЕ приемлемо. Столбец имени не отсортирован и не может быть отсортирован! В качестве значения поиска используется только столбец «Имя». Я бы предпочел использовать / несколько вспомогательных столбцов вместо формулы массива.

Row Name    Data
1   Joe     10
2   Tom     20
3   Eva     30
4   Adam    40
5   Tom     21

LARGE работает только с числами, а функция VLOOKUP возвращает только первое совпадение. ПРОСМОТР работает только иногда, так что его тоже нет.

Так что если бы я хотел последний матч за «Тома», то он должен был бы вернуть «21».


person Kim    schedule 31.05.2009    source источник


Ответы (4)


Формулы массива можно избежать с помощью вспомогательного столбца. Предположим, что в F1 есть имя для сопоставления (например, Том). В строке вспомогательного столбца C2 введите

=IF(A2<>$F$1,0,row())

Затем скопируйте формулы по своим данным.

Теперь столбец C содержит 0 для несовпадающих имен и номер строки для совпадающих. Максимальное значение столбца дает строку решения. Теперь результат прост: нужно использовать правильное смещение с функцией смещения:

=OFFSET(B1,max(C:C)-1,0)

PS: моя копия Excel находится на итальянском языке, поэтому я не могу проверить этот английский перевод формул.

person momobo    schedule 30.01.2010

Думаю, это самый простой способ сделать это.

=LOOKUP("Tom";A2:B7)
person Makah    schedule 03.04.2013

Создайте столбец с формулой массива (введите его с помощью Ctrl + Shift + Enter):

=VLOOKUP(MAX(IF($B$2:$B$6=B2, $A$2:A$6, 0)), $A$2:$C$6, 3, FALSE)

Чтобы убедиться, что вы все сделали правильно, щелкните ячейку, и формула должна быть заключена в фигурные скобки ({}).

Примечание. Предполагается, что «Строка» находится в A1.

person Eric    schedule 31.05.2009
comment
Строка не A1. Просто чтобы показать, какие строки используются. Имя - A1, а данные - B1. - person Kim; 31.05.2009

Я придумал решение, но для этого требуется, чтобы числа в данных были параллельны, например

Name        Data
Joe         1
Tom         1
Eva         1
Adam        1
Tom         2
Tom         3
Eva         2

Но это нормально, поскольку мои данные в любом случае выглядят так. Таким образом, если имя используется раньше, то оно должно быть старым наивысшим +1, также называемым одновременным.

Имя - A1, данные - B1, и эта формула переходит в C2:

FLOOR(SQRT(2*SUMIF(A2:A7,A2,B2:B7)),1)
person Kim    schedule 31.05.2009