Всем привет!
Пишу вот такую штуку - =LOOKUP(D4;$A$4:$A$546;$B$4:$B$546)
Она берёт значение из D4, ищет его в массиве A4:A546, и возвращает для найденной строки значение из столбца B.
Но, почему-то эта конструкция работает только, если в D4 5ти значное число, если меньше, то возвращает #N/A..
Может я вообще что-то не так понимаю - формулы в таблицах не использовал со школы, а тут вдруг пришлось.
На всякий случай прикрепил сам файл - https://www.dropbox.com/s/rpqp1xbwpv5rztj/52538%20%283%29.ods?dl=0
В нём каждая строка - это страница, для каждой страницы указан ID родительской страницы, но названия её нет. Формулой выше я беру id родительской страницы, ищу страницу с таким ID и вывожу её название.
Можно увидеть ошибку, например в ячейке G44:
=LOOKUP(D44;$A$1:$A$546;$B$1:$B$546)
в D44 - 2260
в столбце А есть такое значение четырьмя строками выше, в столбце B соответствующее ему значение "Самосвальные полуприцепы". Так почему возвращает #N/A?
LibreOffice Calc 6.2.0 MacOS
Заранее огромное спасибо!
Вектор значений, где идёт поиск, для функции LOOKUP (https://help.libreoffice.org/6.2/en-US/text/scalc/01/04060109.html?DbPAR=CALC#bm_id3159273) обязан быть отсортирован по возрастанию.
В Вашем случае, поскольку векторы поиска и результата рядом, можно воспользоваться VLOOKUP (https://help.libreoffice.org/6.2/en-US/text/scalc/01/04060109.html?DbPAR=CALC#bm_id3153152) с указанием четвёртого параметра Sorted = 0.
=LOOKUP(D4;$A$4:$A$546;$B$4:$B$546;0)
Спасибо за суперскоростной ответ)
Однако =VLOOKUP(D44;$A$4:$A$546;$B$4:$B$546;0) возвращает #VALUE!, а =LOOKUP(D44;$A$4:$A$546;$B$4:$B$546;0) - Err:504
Я боюсь, формула из ответа 2 не сможет работать.
=VLOOKUP(D4;$A$4:$B$546;2;0)
Обратите внимание, как VLOOKUP обрабатывает параметры 2 и 3.
Спасибо огромное!
=VLOOKUP(D4;$A$4:$B$546;2;0)
Работает! :beer:
Тогда переименую тему в "Как правильно найти значение через VLOOKUP()?"
Цитата: mikekaganski от 12 февраля 2019, 13:38Я боюсь, формула из ответа 2 не сможет работать.
Код:
=VLOOKUP(D4;$A$4:$B$546;2;0)
Обратите внимание, как VLOOKUP обрабатывает параметры 2 и 3.
Если можно, ещё один вопрос:
Теперь, получив название родительской страницы товара, я хочу найти ещё родительскую страницу этой страницы,
Пишу так:
VLOOKUP(VLOOKUP(VLOOKUP(D333;$A$4:$B$546;2;0);$A$4:$D$546;2;0);$A$4:$B$546;2;0)
По моей логике - я получаю значение родительской страницы данного товара, для простоты X
X=VLOOKUP(D333;$A$4:$B$546;2;0)
Используя это значение, я получаю значение Id родительской страницы этой страницы, назовём это Y:
Y = VLOOKUP(X;$A$4:$D$546;2;0)
И используя это id я ищу название этой страницы
VLOOKUP(Y;$A$4:$B$546;2;0)
Получает то, что я написал выше. И снова я получаю #N/A
Что такое "родительская страница"? В Calc нет "страниц" (до тех пор, пока на печать не выводим); пожалуйста, пользуйтесь терминологией, понятной другим.
(понял - это название столбца D.)
Внутренний вызов VLOOKUP даёт Вам строку из столбца B, соответствующую числу D333 в столбце A. ОК - а теперь давайте зачем-то поищем эту строку из B снова в столбце A, и если найдём, возьмём значение из B рядом. (Странно, почему не находит?) И повторим эту странную операцию ещё раз.
Ещё раз - обратите внимание, как обрабатывает VLOOKUP параметры 2 и 3. В параметре 2 передаётся прямоугольный массив; в параметре 3 передаётся номер столбца в этом массиве. Поиск идёт всегда в первом столбце переданного массива (поэтому если надо искать, скажем, в столбце X, то и массив должен быть $X$1:$Z$5). А вот от параметра 3 зависит, из какого столбца будем брать результат справа от найденного значения - и если передано $A$4:$D$100, и нам нужно значение из D, то третий параметр должен быть 4, а не 2.
Т.е. вначале мы искали значение столбца B, соответствующие значению столбца D. А теперь вы хотите по по этому найденному значению, найти опять значение столбца D? Или я что-то не так понимаю?