[РЕШЕНО] Сопоставление выпадающих списков с базой данных

Автор Denis.researcher, 21 июля 2016, 16:32

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

Denis.researcher

Здравствуйте!
Составляю калькулятор веса товаров.
Задача: у товара есть комплектующие материалы. Нужно вводя наименование и размеры товара автоматически вычислять его вес.
Алгоритм:
1. На листе 1 есть перечень материалов. Напротив каждого материала есть вес его кубического сантиметра.
2. На листе 2 есть столбец с выпадающим списком продукции. Выбирается название продукции и в текущей строчке с помощью тех же выпадающих списков выбираются материалы, из которых состоит конкретная продукция, у каждого материала выбирается его толщина в продукции, а в следующем столбце должен показываться вес квадратного сантиметра этой продукции, умноженный на количество сантиметров по высоте. В конце строки вес всех комплектующих материалов суммируется.
Второй пункт я пропишу один раз и больше к нему возвращаться не буду (без необходимости). Буду работать только с третьим листом.
3. На листе 3 можно выбрать продукцию, ее размеры по ширине и высоте и в четвертой клеточке появляется суммарный вес выбранной продукции.

Что сделано:
1. Выпадающий список получилось сделать.
2. Попробовал функцию DGET, но не смог "договориться" с диапазонами данных. Проблема в том, что нужны операции не в рамках одного листа (в интернете и в справочнике LOс такие примеры есть), а в рамках разных листов.

Проблема заключается в том, что выпадающих списков несколько и связать их нужно в сложную цепочку.
Файл с таблицами загружаю.

Прошу помочь разобраться в командах, которые нужно использовать.

kompilainenn

работать будет в Эксель или таки в Либре?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

Denis.researcher

Работать будет в Либре в основном, в Экселе - во вторую очередь.
Приоритет - Либра.

rami

На соломе как-то было проще спать ;D

Я сделал только для двух слоёв, для остальных нужно просто скопировать формулы на втором листе. Проверяйте:

Denis.researcher

rami, вы - гуру!
Задача решена.
Огромное вам спасибо!

Форум поддержал :)

Denis.researcher

rami, вылез еще один вопрос :)

Из всего перечня материалов есть два, которые не считаются стандартным способом.
Например, размеры изделия составляют 100х200 см.
Материал_1 представляет собой наружный контур. Ширина этого материала по контуру изделия всегда составляет 10 см. с каждой стороны изделия, минус все остальное, что внутри. Т.е., этот контур шириной 10 см. - это рамка слоя.
А Материал_2 представляет собой внутреннее наполнение слоя. Его размеры равны размерам изделия минус 10 см. с каждой стороны.

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

Сложность в том, что при суммировании чисел из строки нужно, чтобы суммировались только те числа, которые соответствуют всем материалам, кроме двух отдельных. А отдельные также вычленяются и суммируются отдельно  :o

Я сначала думал, что трудно общий калькулятор сделать, но тут прям мозг разрывается :)

rami, прошу помочь еще раз )


rami

Цитата: Denis.researcher от 25 июля 2016, 10:10Из всего перечня материалов есть два, которые не считаются стандартным способом.
Например, размеры изделия составляют 100х200 см.
Материал_1 представляет собой наружный контур. Ширина этого материала по контуру изделия всегда составляет 10 см. с каждой стороны изделия, минус все остальное, что внутри. Т.е., этот контур шириной 10 см. - это рамка слоя.
Если нужно получить вес "контура", добавьте в таблицу на втором листе два элемента: сплошной слой 100х200 см. из "вещества" и сплошной слой 80х180 см. из "антивещества" (с отрицательной плотностью или весом), в результате получите вес "контура"
Цитата: Denis.researcher от 25 июля 2016, 10:10А Материал_2 представляет собой внутреннее наполнение слоя. Его размеры равны размерам изделия минус 10 см. с каждой стороны.
Тут тоже не должно быть проблем.

Если у вас не получится сделать то, что я предлагаю выше, выложите документ с максимумом того, что получилось и описанием того, что нужно сделать.

Denis.researcher

Цитата: rami от 25 июля 2016, 13:28
Если нужно получить вес "контура", добавьте в таблицу на втором листе два элемента: сплошной слой 100х200 см. из "вещества" и сплошной слой 80х180 см. из "антивещества" (с отрицательной плотностью или весом), в результате получите вес "контура"
Попытался представить, как это будет, и не смог.
1. В таблице на второй странице высчитывается вес одного кубического сантиметра с учетом высоты каждого слоя.
2. Размер изделия (площадь) на третьей странице может варьироваться (100х200 был использован в качестве примера).
3. Толщина рамки фиксирована для любых размеров - каждая сторона по 10 см. Соответственно, внутренность по каждой стороне всегда меньше на 10 см.
--
Выкладываю формулу, как она, на мой взгляд, должна быть логически.
Там не хватает операторов для трех клеточек избирательных сумм в строчке изделия (страница 2).


Denis.researcher

Моделей продукции около 120 шт.  ;D
Каждую модель можно оперативно просчитать по весу, если просто выбрать ее из уже заполненных по составу и внести размеры.
Ваш вариант очень удобен для оперативного просчета веса изделия и он решает задачу вычислений.
Но при необходимости быстро получать информацию о весе будет тяжело  :-[
Поэтому, одна из страниц выделена под модели изделий - чтобы их один раз заполнить и больше к ним не возвращаться )

Если вы подскажете мне оператора, который суммирует по критерию, я постараюсь его встроить в формулу.
В конечном итоге, мне нужно будет внести эту формулу в полный калькулятор, чтобы посчитать все сразу, за исключением размеров  :roll:

rami

Цитата: Denis.researcher от 26 июля 2016, 10:07Ваш вариант очень удобен для оперативного просчета веса изделия и он решает задачу вычислений.
Значит у вас будет два варианта ;D
Цитата: Denis.researcher от 26 июля 2016, 10:07Но при необходимости быстро получать информацию о весе будет тяжело 
Поэтому, одна из страниц выделена под модели изделий - чтобы их один раз заполнить и больше к ним не возвращаться )
Тогда создать таблицу "Состав матрасов" без промежуточных расчётов, только материал и его толщина.
Цитата: Denis.researcher от 26 июля 2016, 10:07Если вы подскажете мне оператора, который суммирует по критерию, я постараюсь его встроить в формулу.
Формула SUMIF(), возможно и другие.

rami

Цитата: Denis.researcher от 25 июля 2016, 14:133. Толщина рамки фиксирована для любых размеров - каждая сторона по 10 см. Соответственно, внутренность по каждой стороне всегда меньше на 10 см.
А какие материалы идут на рамку и внутренность? Сколько таких "спецслоёв" в матрасе?

На листе Состав матрасов сделал компактную таблицу для обычных слоёв (думаю, что это удобней), после вашего ответа допишу данные для "спецслоёв" справа от таблицы.

Denis.researcher

В разных матрасах есть разное количество слоев и разное сочетание этих слоев.
Если брать "сложные" слои, то есть 4 "внутренних" слоя (пружины четырех разных типов) и 1 "наружный" слой - поролоновый короб, создающий жесткость по контуру (применяется для всех пружин).
Толщина (по ширине) этого короба составляет 10 см (всегда). Соответственно, площадь пружинного блока меньше площади матраса в целом на 10 см. с каждой из четырех сторон. Т.е., получается, что при использовании пружин нужно из ширины этого слоя вычитать 20 см. по ширине (по 10 с каждой стороны) и 20 см. по длине (также по 10 с каждой стороны). Картинку состава матраса прилагаю.
Все остальные материалы занимают полную площадь изделия и рассчитываются классически.
--
Когда я говорил об операторе выборочной суммы, сложность была в том, чтобы не просто суммировать ячейки, которые соответствуют столбцам с названием (вы это сделали в каждом столбце слоя), а суммировать их в массиве данных, где есть несколько пар таких столбцов.
И вот здесь я начал цеплять водоросли... (цитата из анекдота) :)

Denis.researcher

На ваши вопросы я не совсем полно ответил:

1. В матрасе может быть только один слой пружин (в тех моделях, где пружины используются). И это может быть один из четырех возможных типов пружинных блоков. Каждый тип блока имеет свой вес.
2. Если в матрасе есть пружины, значит, есть и поролоновый короб, который всегда одинаков по типу / весу на куб.см.
---
Типов материалов в матрасе около 20. Делать 20 столбцов будет не очень удобно для занесения информации. А слоев обычно меньше и их можно суммировать (например, в матрасе два одинаковых слоя и при внесении состава их можно объединить). Как правило, количество слоев до 10 (не более).

rami

Цитата: Denis.researcher от 27 июля 2016, 09:24Типов материалов в матрасе около 20. Делать 20 столбцов будет не очень удобно для занесения информации.
Это всех материалов? Или только объёмных имеющих толщину (не считая ткани)?
У каждого пружинного блока одна своя высота? Если да, то это упростит расчёты.

Моя таблица на втором листе в последнем документе в три раза компактней чем ваша (у меня один столбец на материал, а у вас три), но вам видней как должно быть.