vlookup получить последнее совпадение дубликатов

#google-sheets

Вопрос:

Я пытаюсь отобразить отфильтрованную версию данных листа 1 в листе 2:

Лист1:

введите описание изображения здесь

Лист2:

введите описание изображения здесь

Я использовал vlookup в столбцах листа 2 C,D,E для отображения столбцов листа 1 B,D,A соответственно.

т. е. Лист 2 — Колонка C

 =vlookup(A2,Sheet1!A3:D,3)
 

но я не уверен, как заставить его работать с дубликатами и получать только последнюю версию.
Я попытался использовать vlookup в результате запроса, но это не сработало (потому что я ссылался на ссылку?)

 =sortn(query(Sheet1!A2:D6,"select * where A is not null order by B,A desc"),99^99, 2, 2, true)
 

Как я могу применить vlookup, чтобы получить последнее совпадение повторяющихся строк? Если это невозможно, как я могу это сделать (если возможно, без необходимости добавлять дополнительные листы)

Ответ №1:

Если бы я хотел использовать для этого Vlookup и запрос, я бы получил что-то вроде этого:

 =ArrayFormula(vlookup(query(B2:B,"select min(B) where B is not null group by B label min(B) ''"),
query(A2:D,"select B,A,C D,C,D where A is not null order by B,A"),{2,1,3,4,5}))
 

таким образом, первый запрос получает уникальные значения столбца B, а второй запрос получает исходные данные плюс общее количество (C D), отсортированное в порядке возрастания фамилии, а затем метки времени. Затем vlookup находит последнее совпадающее значение для каждого имени семьи, которое в данном случае является последним. Вы также можете сортировать по убыванию метки времени и использовать точную форму vlookup, чтобы найти первое вхождение — возможно, немного медленнее:

 =ArrayFormula(vlookup(query(B2:B,"select min(B) where B is not null group by B label min(B) ''"),
query(A2:D,"select B,A,C D,C,D where A is not null order by B,A desc"),{2,1,3,4,5},0))
 

На самом деле я бы, вероятно, использовал сортировку и сортировку, как, я думаю, вы начали делать в своем вопросе:

 =sortn(sort(filter({A2:B,C2:C D2:D,C2:D},A2:A<>""),2,1,1,0),999,2,2,1)
 

На этот раз он отсортирован по возрастанию фамилии, затем по убыванию метки времени, затем сортировка удаляет дубликаты.

введите описание изображения здесь

Ответ №2:

использовать в строке 2:

 =INDEX(IFNA(VLOOKUP(A2:A, SORT(Sheet1!A:D, ROW(Sheet1!A:D), 0), 3, 0)))