Найти последнюю (дата) запись

Найти последнюю (дата) запись

Я пытаюсь вернуть оценку, связанную с компанией, но мне нужна только последняя запись. Если оценки нет вообще, я хочу, чтобы ячейка была пустой.

Компании Счет Дата
А 3.5 01.02.2020
А 4.3 16.01.2019

В этом случае, если бы мне нужна была оценка компании A, я бы хотел, чтобы она вернула 3,5. Если я ищу компанию D, я бы хотел, чтобы ячейка оставалась пустой.

Заранее большое спасибо за любую помощь!!

решение1

ЕСЛИ имеется формула динамического массива SORTBY и FILTER:

=@SORTBY(FILTER(B:B,A:A=E1,""),FILTER(C:C,A:A=E1,""),-1)

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

решение2

Использовать XLOOKUP():

=XLOOKUP(F2,  SORTBY(A2:A41, C2:C41),  SORT(C2:C41),  "",  0,  -1)

SORTBY()помещает ваш массив поиска, A2:A41 в формуле, в порядок, отсортированный по столбцу C, столбцу, из которого вы хотите получить значения. Вы сортируете его так, чтобы последний экземпляр значения поиска, который XLOOKUP()будет найден, если искать сверху вниз, был тем, который вы хотите, а не случайной записью.

Вы обеспечиваете это, сортируя BY вашего столбца возвращаемого значения, столбца C в данном случае (то есть C2:C41 в формуле) в направлении возрастания, то есть, наименьшее из его значений первым, наибольшее из них последним. Поскольку в этом столбце есть даты, а Excel рассматривает даты как числа, это не вызывает никаких трудностей.

Таким образом, на этом этапе Excel видит диапазон данных с самой высокой датой значения, самой поздней датой, для каждого набора значений диапазона поиска в конце созданного виртуального диапазона данных.

XLOOKUP()затем ему говорят искать от конца к началу (снизу вверх), и поэтому, когда он находит заданное ему искомое значение, он находит последнее из них в любом наборе этих значений в диапазоне виртуальных данных формулы. Поэтому он вернет соответствующую запись в также виртуальном столбце результатов. Поскольку это также было отсортировано, только с SORT()этим временем, поскольку больше ему не нужно, и поскольку две сортировки были выполнены одним и тем же столбцом «сортировать по», запись в столбце C будет соответствовать исходной записи из столбца A: другими словами, строки пар из двух столбцов остались вместе, а не стали перемешанной мешаниной.

Итак, вы создали виртуальный диапазон данных массива поиска и массива результатов, в котором пары остались сопоставленными. Вы отсортировали два массива так, чтобы каждое значение поиска группировалось с похожими значениями, гарантируя, благодаря сортировке по массиву результатов, что последнее из них будет тем, что вам нужно. И поскольку XLOOKUP()можно искать от конца до начала, его можно найти.

На самом деле, вы могли бы сделать сортировку в нисходящем направлении, от самой высокой даты к самой низкой дате для каждого набора идентичных значений поиска. Затем вы могли бы использовать XLOOKUP()для просмотра от начала до конца, если бы у вас была какая-то причина для этого.

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