[Решено] Расчитать данные из таблицы по неделям для графика.

Автор Alexcostariha, 6 октября 2021, 11:30

0 Пользователи и 1 гость просматривают эту тему.

Alexcostariha


Спасибо-буду знать.
Для меня не совсем понятно что значит строить графики в *.csv-файле.
Если я строю таблицу в Libreoffice и беру данные для графика из неё и строю график в в Libreoffice, то зачем мне создавать *csv-файл?
Видимо имеются в виду какие-то Базы данных. Базы данных для меня - тёмный лес. Я столкнулся с ними однажды-когда нужно было извлечь
номера телефонов из файла Базы данных для Вайбера на своём компьютере - viber.db База данных SQLite 3. Пришлось повозиться.

Не в тему. Если говорить о Базах данных-то у меня допустим может стоять задача. Я  заполняю договор с покупателем.
Могу ли я создать Базу данных, чтобы прямо в шаблоне договора я взял данные для спецификации по Названию товара -
название, комплектация и прочее, прямо из прайса - не открывая отдельно сам прайс?
Это при том, что у меня с десяток Прайсов с разным разбиением по колонкам и разной структурой вообще.



eeigor

#16
Можно не открывать. Если прайсы нельзя унифицировать, то надо задавать требуемый. Хранить в отдельном файле (файлах) ODS. А все поля извлекаются формулой ВПР (VLOOKUP) – вертикальный просмотр, по уникальному названию товара (желательно в левой колонке по отношению к извлекаемым столбцам – не обязательно).
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

economist

Цитата: Alexcostariha от 10 октября 2021, 09:23что значит строить графики в *.csv-файле

CSV, TXT, Calc, SQlite - это просто данные, по ним строятся графики.

Насчет зоопарка прайсов, вот рабочая схема по включению строк из  них в договор -
- сохраняем их все в TXT в одной кодировке, с одним разделителем - Tab - в 1C он же - в одну папку с простыми именами без пробелов
- создаем в Base - файл БД типа Таблица, папку коннектим к ней
- во Writer жмем Ctrl + Shift + F4 и тащим мышкой строки, значения, целые таблицы в табличную часть договора

Вот и все, система работает.

Если нужно красиво и в одной таблице - пишем в Base в редакторе SQL простой запрос вида

SELECT ... FROM ...
UNION
SELECT ... FROM ...

и получаем таблицу, в которой Наим и Артикул - это всегда 2 и 3 колонки.

Еще проще это сделдать в Pandas, которая прочтет из любого источника, даже прайс с сайта поставщика, даже с капчей, и выдаст одну готовую таблицу с графиками. Выбор строк можно реализовать по разному, самое правильное - во Writer поставить XGRID Control и в нем по первым символам подбирать в табл часть нужные строки. Будет удобнее чем в 1С SAP MS Dynamics Галактика итд, потому что вы сами решите где какая пимпочка будет мигать.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Alexcostariha

#18
Спасибо, это интересно.
Проблема висит давно и не знал как к ней подступиться.
Что касается уникального названия по eeigor- это тоже интересно, такая задумка важна.

eeigor

#19
Ну, @economist "зрит в корень" и говорит по существу, только сложно объять необъятное: нужен опыт и время (разбираться придётся со многим). Я же с некоторого времени "даю советы", исходя из текущего положения вопрошающего, чтобы не заставлять его "перепрыгивать ступени" собственного развития. Многим, работающим с Calc'ом, например, проще не выходить за его пределы. Но Writer подключается только к БД. Однако, если документ не сложный, то он, да не покажется это извращением, может быть свёрстан в Calc'e, где подстановка значений из списка-базы данных на другом листе будет плёвым делом (например: рассылка типовых писем-уведомлений, когда не нужны расширенные функции текстового редактора).

Но на конкретные вопросы Вам дадут конкретные ответы.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

Alexcostariha

#20
Можно ли в формулу "=СУММПРОИЗВ(Объём;ГОД(Дата)=$M$1;НОМНЕДЕЛИ(Дата;2)=$L3)"
вставить фильтр по Имени, наподобие выпадающего списка по годам в ячейке "M1"?
Сам спросил-сам и отвечу.
В формулу выше можно добавлять в качестве фильтров именованные диапазоны.
Пример:
=СУММПРОИЗВ(Объём;ГОД(Дата)=$M$1;НОМНЕДЕЛИ(Дата;21)=$L3;Имя=$K$1)
Где "Имя"-именованный диапазон соответсвующий другим столбцам.
K1-выпадающий список выбора по именам: Маша, Даша, Паша, Глаша...
*** Интересный скриптик как перевести номер недели в даты с понедельника по воскресенье.
Очень удобно:
$ weekof.sh 41 2021
"Пн окт 11 2021" - "Вс окт 17 2021"

Видимо это тоже делается в электронных таблицах. Благодаря ему я сразу увидел, что:
Если часть формулы "НОМНЕДЕЛИ(Дата;2)"-то первая неделя это та, что c первым января, не соответствует официальным номерам недель.
При записи "НОМНЕДЕЛИ(Дата;21)" - первая неделя это та, что с четвёртым января; соответствует официальным номерам недель.

При чтении Справки этого вначале не заметил.

eeigor

#21
Да, можно. Добавьте для массива любой дополнительный критерий, значение которого можно выбрать в отдельной ячейке из выпадающего списка значений.

Условия в формуле СУММПРОИЗВ (SUMPRODUCT) можно 1) перечислять через точку с запятой в качестве отдельных параметров, если они объединяются между собой оператором "И", а можно - это то же самое: 2) объединить все условия через умножение (*) в пределах одного параметра функции.
При объединении условий оператором "ИЛИ", т. е. через сложение (+) условий, применяется только второй способ, то есть все складываемые условия объединяем в пределах одного параметра функции (ведь функция, исходя из её названия, перемножает свои параметры, а нам надо сложить, если нужен оператор "ИЛИ").
Иногда приходится использовать оба оператора: "И" и "ИЛИ". Тогда комбинируем всё вышеописанное.

Пример моей формулы с перемножением условий. Посмотрите только на выражения в круглых скобках (условия) и знаки умножения (зд. оператор "И"):

{=SUM(IF(A2="(Все)";ЖВИ_Дата<>"";YEAR(ЖВИ_Дата)=A2)*IF(A4<>"КВИ";1)*(ЖВИ_Должность=B2)*(ЖВИ_Подразделение=C2)*(ЖВИ_ФИО<>"");IF(A2="(Все)";КВИ_Дата<>"";YEAR(КВИ_Дата)=A2)*IF(A4<>"ЖВИ";1)*(КВИ_Должность=B2)*(КВИ_Подразделение=C2)*(КВИ_ФИО<>""))}

Это формула массива, но если "зарядить" её в СУМПРОИЗВ (SUMPRODUCT), то фигурные скобки не понадобятся. А если каждое условия оформить отдельным параметром упомянутой функции, то и знаки умножения не нужны.

То есть для решения вашей задачи функция СУММПРОИЗВ (SUMPRODUCT) не обязательна. Надо научиться составлять условия и комбинировать их.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

Alexcostariha

В копилку.
За операторы спасибо. Возможно с ними придумется вариант,
чтобы в одной формуле можно было убирать какой-нибудь из фильтров.
И таким образом получать картину в целом или по частям.