PDA

Показать полную графическую версию : [решено] Libreoffice Calc - выпадающий список с отбором по условию


El Scorpio
17-05-2016, 02:10
Добрый день

В LibreOffice Calc через "Данные \ Проверка" можно сделать выбор значения из выпадающего списка.
Источником выбираемых значений может быть и список строк, и диапазон ячеек (в том числе именованый диапазон)

Вопрос: как сделать формирование списка значений по определённым условиям?
Например: есть таблица вида "Отдел | Работник". На другом листе оператор в одной ячейке выбирает из списка отдел, а затем в другой ячейке - работника этого отдела. Причём в списке должны присутствовать только работники этого отдела.
Для первой ячейки достаточно указать источник данных - столбец "Отдел" искомой таблицы (дубли будут скрыты). С этим проблем нет. А для второй?

LibreOffice пишет подсказку: "допустимо только непрерывное выделение строк и столбцов, или формулу, возвращающую диапазон ячеек или массив".
Как я понимаю, нужно использовать формулу, которая сделает выборку данных из таблицы и вернёт список строк? Что это за формула?

Iska
17-05-2016, 03:12
Как я понимаю, нужно использовать… »
El Scorpio, базу данных тут надо использовать, а не табличный редактор.

El Scorpio
17-05-2016, 03:31
Iska, знаю, что тут по функционалу больше LibreOffice Base подходит. А лучше вообще сразу "1С: Предприятие" :lol:

Отделы, работники - это я взял просто для примера. У меня используются другие показатели учёта.
Просто до недавнего времени для получения конечных сведений вполне хватало нескольких таблиц Calc
А теперь "сверху" озадачили необходимостью печатать промежуточные результаты.

Осваивать BASE и повторно забивать все сведения (или писать импорт/экспорт) особо некогда. То же самое могу сказать про 1С.
На следующий год может быть и сделаю всё на 1С, чтобы всё было очень удобно и красиво.

А сейчас для быстрого решения конкретной проблемы вроде бы как достаточно ввести пару формул (особенно если они есть).
Просто до этого мне не приходилось работать с формулами массивов

El Scorpio
28-03-2017, 16:14
Ради поиска одной старой темы открыл список своих тем, увидел эту и вспомнил, что нашёл решение проблемы. Оказывается, оно достаточно простое


Для использования выпадающих списков с отбором по условию в окне "Данные \ Проверка..." в качестве Источника нужно указывать такие вот формулы


ЕСЛИ(Ст_Перечень_Процедур_КОСГУ=$F2; ЕСЛИ(Ст_Перечень_Процедур_ОКПД=$C2; Ст_Перечень_Процедур_Наименование; ""); "")

Для наглядности данная формула использует именованные диапазоны ячеек, соответствующие столбцам одной таблицы - источника данных (здесь "Перечень процедур").
Каждый диапазон должен иметь одинаковое количество строк.
$F2 и $C2 - это адреса ячеек текущей строки конечной таблицы

Проверка производится для каждой строки таблицы-источника. Каждая формула ЕСЛИ проверяет соответствие значения ячейки указанного столбца (здесь код КОСГУ или ОКПД) значению поля конечной таблицы. Вместо равенства можно использовать любые другие операции сравнения и условные функции.
Когда все проверки ЕСЛИ завершаются истиной, программа добавляет в выпадающий список значение из столбца "Наименование"
Если же хотя бы одно ЕСЛИ завершается ложью, в список выбора поступает пустая строка (""), которая при отображении списка глушится параметром "Пропуск пустых строк".
В результате мы наблюдаем в списке выбора только те значения, которые нам нужны.




© OSzone.net 2001-2012