Страницы: 1
RSS
Многократная обработка нескольких столбцов, Нужен оптимальный вариант пошаговой обработка нескольких столбцов. Через словари или коллекции, что в данном случае удобнее.
 
Здравствуйте.

Хотелось бы получить:
Сроков нет, пока кода нет обрабатываю в ручную, как код будет порадуюсь.
Хотелось бы получить хотя бы основу, (не костыльный вариант, а то как это делают знатоки, "правильно-оптимально") кода обработки первых двух проходов. Остальную рутину, кучу проверок, возможно допилю сам.
Хотелось бы иметь правильную основу, на моём файле (возможно хоть с минимальными приписками-пояснениями в коде, что куда. Или просто рабочий код), чтобы дальше учиться и дорабатывать остальной функционал.
Отдельно или вместе, код расчёта значения [Shg_KGdiff], ячейка V4. Как я понимаю чтобы уйти в код и вернуться на лист уже с окончательными значениями столбца DOCS в код, в начале нужно брать и столбцы из которых считается [Shg_KGdiff], по формулам в ячейках видно откуда что берётся.

Напишите пожалуйста в личку за сколько Вам интересно сделать часть, какую, или всё.
Сразу не отвечу, у меня уже ночь, да и выходные.)

Нужно обрабатывать 5 столбцов в несколько проходов. (для значения [Shg_KGdiff], ячейка V4 доп столбцы, видно по формулам)
1-й столбец - стиль изделия (STYLE = D)
2-й - размер, (SIZE =H)
3-й - (WORK = P) вес плановый из чертежа, но может быть и вес взвешивания, об этом говорит значение в столбце 4,
4-й - (Q) индикатор, какой вес в столбце 3
5 - (DOCS - R) вес из упаковочного листа.
1-й + 2-й столбцы = модель изделия. Нужно много раз проходить по всем позициям и проверять соответствие разным условиям.

Первый проход:
Обработку нужно делать по моделям т.к. если хоть у одной позиции есть результат взвешивания, остальным позициям, такой же модели ставим вес взвешивания.
Если в одной коллекции нет ни одного результата взвешивания то проверка и выполнение условия = у всех позиций, одной модели одинаковый вес.
Если вес различается, остановка обработки, сообщение и дальнейшая ручная корректировка базы. В моём файле первое такое сообщение выскочит на OEM 022 19x8.0 т.к. один вес =11,56 другой 11,58. После сообщения и ручной корректировки, в начале выполнения кода уже у обоих вес будет = 11,57
Аналогично OEM 022 19x9.0 после сообщения и ручной корректировки базы у обоих вес будет = 12,16

Второй проход, либо во время первого прохода:
Нужно сравнивать веса одинакового стиля (ст1) и разных размеров (ст2), чтоб у меньшего размера, не был вес больше, чем у большего размера.
Сравниваем OEM 022 19x8.0 и OEM 022 19x9.0: разница веса WORK  12,16 - 11,57=0,59. Соответственно разница веса в столбце DOCS 12,7 - 12,2= 0,5 не должна быть меньше 0,59, а у нас 0,5, это меньше. Нужно корректировать столбец DOCS: если [Shg_KGdiff] положительное значение, то меняем 12,7 на 12,79 (12,79=12,7+(0,59-0,5)) , если же отрицательное то 12,2 меняем на 12,11 (12,11=12,2-(0,59-0,5)). И так далее по всем строкам. Такое сравнение проводится только в рамках одного STYLE, разные стили между собой не сравниваются.

Отдельным блоком или может ёщё как нужно перевести в VBA расчёт значения [Shg_KGdiff], ячейка V4  т.к. дальнейшая обработка полностью зависит от этого значения, придётся постоянно выгружать промежуточные значения столбца DOCS что будет сильно тормозить процесс расчёта.

Дальнейшие проходы, не знаю сколько их получится:
Пока выгрузка обратно на лист, там работают формулы и считается общий вес. Сравниваем получившийся общий вес с общим весом контейнера из взвешивания. И разницу веса нужно равномерно распределить, помодельно, сначала на модели где нет взвешивания, а если каждой позиции уже добавлено до 1 кг, то остаток равномерно раскидывается на все модели где взвешивание есть.
Планировал проходить по модельно и каждому диску добавлять или убирать (в зависимости от значения [Shg_KGdiff]) по 0,1кг пока общий вес не сравняется. Но до этого ещё нужно дожить.
 
Пишу в личку
В работе
Изменено: Jack Famous - 13.05.2024 12:06:11
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх