1

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

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

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

Это в основном работает, но есть две проблемы:

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

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

1 ответ1

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)

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .