Формула электронной таблицы для отображения последних цен

Формула электронной таблицы для отображения последних цен

Я создал таблицу LibreOffice Calc со столбцами AC. В столбце A у меня есть список купленных деталей (в хронологическом порядке возрастания). В столбце B у меня есть список соответствующих цен. В столбце C я хочу показатьпоследняя цена покупкидля текущей части.

Вот что я придумал, чтобы это сделать:

=INDIRECT(CONCATENATE("B",TEXT(MATCH(A8,A1:A7,1),"#")))

В принципе это работает, но есть две проблемы:

  1. Это очень запутанно. Есть ли более простой способ сделать это?
  2. Если деталь никогда ранее не покупалась, будет показана цена той детали, которая находится в строке выше.

ОБНОВЛЕНИЕ: После дополнительных тестов выяснилось, что это определенно не работает так, как ожидалось. Я не могу сказать, является ли это ошибкой функции MATCH или это неподходящая функция для работы. Функция MATCH находит «меньше или равно», и я думаю, что условие «меньше» вызывает проблемы.

решение1

Это довольно похожая проблемаКак заставить VLOOKUP вернутьпоследнийсоответствовать?. Арешениеот Excellll в значительной степени соответствует вашим требованиям.

=INDEX(IF($A$1:$A$1000=A1,$B$1:$B$1000),MAX(IF($A$1:$A$1000=A1,ROW($A$1:$A$1000))))

Я сделал диапазоны поиска произвольно большими. Вы можете использовать огромный диапазон, поэтому вам не нужно будет корректировать формулу по мере добавления новых данных. В моем тестовом примере было всего шесть записей; неиспользуемые строки не будут соответствовать ничему, поэтому они игнорируются.

Это формула, которая находится в ячейке C1, поэтому целью поиска является ячейка A1 (два местоположения).

Функция MAX находит строку с наибольшим числом (в хронологическом порядке, то есть она будет самой последней).

Это формула массива, поэтому ее нужно вводить с помощью Ctrl-Shift-Enter. После ввода C1 вы можете скопировать ячейку с помощью Ctrl-C, выбрать диапазон ячеек, если необходимо, и вставить с помощью Ctrl-V. Если вы добавляете больше данных, скопируйте и вставьте другой блок ячеек.

Или оберните это в тест с пустыми ячейками и предварительно заполните больше ячеек, чем вам когда-либо понадобится:

=IF(ISBLANK(A1),"",formula_above)

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

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