Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

25 Июнь 2019, 13:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice  без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Как правильно найти значение через VLOOKUP()?  (Прочитано 587 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ShevchAe
Новичок
*
Offline Offline

Сообщений: 4


« Стартовое сообщение: 12 Февраль 2019, 13:14 »

Всем привет!
Пишу вот такую штуку - =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

Заранее огромное спасибо!
Записан
mikekaganski
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 408


« Ответ #1: 12 Февраль 2019, 13:21 »

Вектор значений, где идёт поиск, для функции LOOKUP обязан быть отсортирован по возрастанию.

В Вашем случае, поскольку векторы поиска и результата рядом, можно воспользоваться VLOOKUP с указанием четвёртого параметра Sorted = 0.
Записан

С уважением,
Михаил Каганский
Yakov
Администратор
**
Offline Offline

Сообщений: 2 403


WWW
« Ответ #2: 12 Февраль 2019, 13:25 »

=LOOKUP(D4;$A$4:$A$546;$B$4:$B$546;0)
Записан

ShevchAe
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #3: 12 Февраль 2019, 13:37 »

Спасибо за суперскоростной ответ)
Однако =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
Записан
mikekaganski
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 408


« Ответ #4: 12 Февраль 2019, 13:38 »

Я боюсь, формула из ответа 2 не сможет работать.
Код:
=VLOOKUP(D4;$A$4:$B$546;2;0)

Обратите внимание, как VLOOKUP обрабатывает параметры 2 и 3.
Записан

С уважением,
Михаил Каганский
ShevchAe
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #5: 12 Февраль 2019, 13:40 »

Спасибо огромное!
Код:
=VLOOKUP(D4;$A$4:$B$546;2;0)
Работает!  Всё хорошо
Записан
Yakov
Администратор
**
Offline Offline

Сообщений: 2 403


WWW
« Ответ #6: 12 Февраль 2019, 13:53 »

Тогда переименую тему в  "Как правильно найти значение через VLOOKUP()?"
Записан

ShevchAe
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #7: 12 Февраль 2019, 14:14 »

Я боюсь, формула из ответа 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
Записан
mikekaganski
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 408


« Ответ #8: 12 Февраль 2019, 14:20 »

Что такое "родительская страница"? В 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.
« Последнее редактирование: 12 Февраль 2019, 14:27 от mikekaganski » Записан

С уважением,
Михаил Каганский
Bigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 610


« Ответ #9: 12 Февраль 2019, 14:59 »

Т.е. вначале мы искали значение столбца B, соответствующие значению столбца D. А теперь вы хотите по по этому найденному значению, найти опять значение столбца D? Или я что-то не так понимаю?
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!