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

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

23 Октябрь 2020, 02:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 3 »   Вниз
  Печать  
Автор Тема: Связные выпадающие списки  (Прочитано 11627 раз)
0 Пользователей и 1 Гость смотрят эту тему.
smesharic
Участник
**
Offline Offline

Сообщений: 19


« Стартовое сообщение: 21 Январь 2016, 16:46 »

Доброго времени суток Товарищи.
Нужна Ваша помощь.
Делаю в рабочих целях документ с выпадающими списками которые связаны друг с другом.
Объясню подробнее.
Нужно так, что бы после выбора в первом выпадающем списке, определяло то, что можно выбрать во втором списке, в третьем и .д.
В Excel получилось такое реализовать. Но данная реализацию не работает в OO
Прошу Вашего содействия, совета по решению данного вопроса. Какие есть выходы из этой ситуации, куда копать?
Пример файла во вложении

* пример2.xls (72.5 Кб - загружено 19 раз.)
Записан
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #1: 21 Январь 2016, 17:13 »

Посмотрите эту тему — кое-чем похожа на ваш вопрос
Записан

smesharic
Участник
**
Offline Offline

Сообщений: 19


« Ответ #2: 21 Январь 2016, 17:16 »

Спасибо за скорый ответ, сейчас буду читать
Записан
smesharic
Участник
**
Offline Offline

Сообщений: 19


« Ответ #3: 22 Январь 2016, 11:03 »

Посмотрите эту тему — кое-чем похожа на ваш вопрос

Если честно принцип очень интересен, но все равно не то, пытался прикрутить это к своему методу получается полный коллапс...
Я в OO работаю впервые (пришлось). И макросы для меня немного пугающи..
Я думал вывести формулами "Если" "И" "ИЛИ" "НЕ", так же не получается, большая путаница..
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #4: 22 Январь 2016, 12:01 »

Если хочется сделать без макросов, на одних (не очень сложных) формулах, то посмотри вот этот ValidityDropDown.ods
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #5: 22 Январь 2016, 12:09 »

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

smesharic
Участник
**
Offline Offline

Сообщений: 19


« Ответ #6: 22 Январь 2016, 13:39 »

Цитата:
Если хочется сделать без макросов, на одних (не очень сложных) формулах, то посмотри вот этот ValidityDropDown.ods

Спасибо. Сейчас буду разбираться в документе и формулах)

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

Смотрите в идеале должно все выглядеть так
Пользователь открывает документ и видит (стандартная шапка в доке будет, описывать не буду) три столбца к примеру
ИмяФамилияОтчетсво
Под каждым из столбцов будет выпадающий список.
Нужно так что бы пока сотрудник не выбрал Имя, Фио и Отчетсво для него были недоступны + от выбора поля Имя зависли поля Фамилия и Отчество
Будет лист на котором будет список из Имен, фамилий и отчеств откуда и будет подбираться массив данных.
Я просто не знаю как еще подробнее описать, в моем доке что я прикладывал в целом все есть.

Сейчас пока буду знакомиться с файлом что прислали.
Спасибо
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #7: 22 Январь 2016, 13:46 »

Для списков фиксированного размера, ну, просто справочники, которые очень редко меняются, мне нравится вариант с именованными диапазонами и функцией INDIRECT() - в приложенном файле.
А для динамически расширяемых списков, с использованием того же принципа, в своё время писал макрос. Поместил там же, на ask.libreoffice.org... теперь найти не могу  Смеющийся

* Drop-Down Lists.ods (12.81 Кб - загружено 54 раз.)
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #8: 22 Январь 2016, 15:33 »

..мне нравится вариант с именованными диапазонами и функцией INDIRECT()
Мне тоже нравится, но и это кажется не то.

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

Представь себе такую задачу: есть список из 1000 людей, есть 20 разных имён, 20 разных отчеств и 200 разных фамилий, понятно, что не все возможные сочетания будут использованы. Нужно выбрав имя получить выпадающий список отчеств, которые соответствуют этому имени, то же самое с фамилиями. Например, для имени Иван будут 10 отчеств (из 20) и 100 фамилий (из 200), а для имени Александр будут 15 отчеств (из 20) и 150 фамилий (из 200). А для сочетания Имя-Отчество будут отобраны только соответствующие фамилии. Для решения такой задачи нужно писать макрос, да не хилый.
Записан

smesharic
Участник
**
Offline Offline

Сообщений: 19


« Ответ #9: 22 Январь 2016, 15:44 »

Ребят простите, я видимо совсем Вас сбил с толку. ФИО я для примера привел.
У меня будет так.
Есть 30 отделов.
В каждом отделе есть по 5-7 должностей
И на каждую должность есть свой набор прав
мне нужно что бы сотрудник выбрав свой отдел, нашел свою должность, и в третье поле ему получается подберется набор прав.
Совет
Цитата:
вот этот ValidityDropDown.ods
  мне подходит, просто я еще не до конца с ним разобрался.
Не могу до конца понять кусок E17:E21

Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #10: 22 Январь 2016, 15:58 »

Насчет "писать макрос" - согласен. И я согласен, и smesharic согласен  Подмигивающий И даже попытка написать была.
Вот только одно соображение беспокоит... Есть мнение, что для вот таких вот связанных списков лучше использовать единственное поле ввода. Эдакий широкий комбобокс, в выпадающем списке которого содержаться все полные ФИО. По мере ввода символов в поле, список фильтруется (сокращается) - что-то типа LIKE '%'+<введено>+'%'. А после выбора значения все три составные части ФИО разрезаются по пробелу и раскидываются по отдельным полям (в другом варианте ItemList содержит строки с полными ФИО для отображения и скрытые записи с их составными частями)
При такой организации и писать-отлаживать вроде как меньше, и оператору при вводе мороки не добавится...

А, вот и уточнение подоспело... Так нужно всего-то два связанных списка и один VLOOKUP()?
Не могу до конца понять кусок E17:E21
Ну, как вычисляется E15 понятно, да? Просто в заголовках категорий (в твоем случае - в списке отделов) отыскивается тот, который выбран из списка в поле B1 и вычисляется его порядковый номер. Функция =INDEX(F2:G6;;E15) возвращает ОДНО значение из прямоугольника F2:G6. А вот если ввод формулы завершить не просто Enter, а Ctrl+Shift+Enter, то формула станет "формулой массива" и вернет из этого прямоугольника целую колонку с номером из E15 - то есть список должностей в этом отделе...
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
smesharic
Участник
**
Offline Offline

Сообщений: 19


« Ответ #11: 22 Январь 2016, 16:05 »

Цитата:
А, вот и уточнение подоспело... Так нужно всего-то два связанных списка и один VLOOKUP()?
Да ) Третье поле я хочу что бы подбором VLOOKUP() попадало
Цитата:
Ctrl+Shift+Enter, то формула станет "формулой массива
ни когда бы не додумался сам. Спасибо!
Сейчас буду дальше проверять и тестить.
Спасибо за участие в решении вопроса.
Записан
smesharic
Участник
**
Offline Offline

Сообщений: 19


« Ответ #12: 22 Январь 2016, 16:17 »

Все получилось. Спасибо.
А как быть если у меня полей Subject больше чем 2 или 3.
Я вроде сделал, только вот на 3-е поле значение Н/Д выпадает...

* Без имени 1.ods (9.71 Кб - загружено 38 раз.)
Записан
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #13: 22 Январь 2016, 17:27 »

А как быть если у меня полей Subject больше чем 2 или 3.
Я вроде сделал, только вот на 3-е поле значение Н/Д выпадает...
В ячейке E15 в формулу нужно добавить третий параметр (порядок сортировки), так как у вас данные не отсортированы, то параметр должен быть 0
Код:
=MATCH(A1;F1:H1;0)
Записан

smesharic
Участник
**
Offline Offline

Сообщений: 19


« Ответ #14: 22 Январь 2016, 17:41 »

Благодарю. Получилось.
Добавил еще пару столбцов, работает Улыбка
Эта формула будет работать если данные будут на другом листе?
К примеру выпадающий список на "Лист1"  а сам массив данных на "Лист2"
мне нужно будет указывать так "$Лист2.$D$2:$D$5" и "=INDEX($Лист2.F2:I4;;E15)"  ?
Записан
Страниц: 1 2 3 »   Вверх
  Печать  
 
Перейти в:  

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