Добрый день, уважаемые формучане. Прошу помощи в следующем решении: есть бланк заявки в котором работают менеджеры. Занося от клиентов заявки, менеджеры напротив каждого наименования в соседней ячейке ставят количество продукта например 1 кор или 14 (14 это килограмм), суть проблемы в том что мне не сформировать итоги по каждому наименованию по всем клиентам, потому что заносят в заявку значения то с коробками (1 кор), то просто число (т.е. в килограммах). А хотелось бы под таблицей организовать общий свод в котором по каждому наименованию суммировались итоги для понимания продан ли данный товар на сегодня. В результате приходиться в рукопашную производить итоги по каждому наименованию, при чем что групповая упаковка это 14кг, пакет 14кг, а подложка берем среднюю 8 кг для подсчета остатков не проданного товара. А еще нужно как то минусовать или плюсовать корректировку (клиент либо увеличивает объем, либо снижает, что также сказывается на итогах). Решение о том что давайте делать все в килограммах, а производство пусть определяет исходя из веса сами сколько это в коробках. Поскольку есть большая погрешность в укладке товара особенно на подложку, то такой вариант пока невозможен. Пример во вложении. Подскажите что можно сделать, сижу мозг ломаю..
Добрый день, уважаемые формучане. Прошу помощи в следующем решении: есть бланк заявки в котором работают менеджеры. Занося от клиентов заявки, менеджеры напротив каждого наименования в соседней ячейке ставят количество продукта например 1 кор или 14 (14 это килограмм), суть проблемы в том что мне не сформировать итоги по каждому наименованию по всем клиентам, потому что заносят в заявку значения то с коробками (1 кор), то просто число (т.е. в килограммах). А хотелось бы под таблицей организовать общий свод в котором по каждому наименованию суммировались итоги для понимания продан ли данный товар на сегодня. В результате приходиться в рукопашную производить итоги по каждому наименованию, при чем что групповая упаковка это 14кг, пакет 14кг, а подложка берем среднюю 8 кг для подсчета остатков не проданного товара. А еще нужно как то минусовать или плюсовать корректировку (клиент либо увеличивает объем, либо снижает, что также сказывается на итогах). Решение о том что давайте делать все в килограммах, а производство пусть определяет исходя из веса сами сколько это в коробках. Поскольку есть большая погрешность в укладке товара особенно на подложку, то такой вариант пока невозможен. Пример во вложении. Подскажите что можно сделать, сижу мозг ломаю..ada
Если правильно понял, что именно должно получиться. Работать должно довольно прытко [vba]
Код
Private Function GetWeight(S) As Double If S Like "*кор" Then GetWeight = 14 * Val(Replace(S, ",", ".")) Else GetWeight = Val(Replace(S, ",", ".")) End Function
Sub tt() Dim Col As Object: Set Col = CreateObject("Scripting.Dictionary") Dim arr(), arr1(), Rng As Range, I As Long Set Rng = Range("A4:D" & Cells(Rows.Count, "H").End(xlUp).Row) arr = Rng.Value For I = 1 To UBound(arr) With Col If .exists(arr(I, 1)) Then .Item(arr(I, 1)) = .Item(arr(I, 1)) + GetWeight(arr(I, 4)) Else .Add Key:=arr(I, 1), Item:=GetWeight(arr(I, 4)) End If End With Next Set Rng = Range("A46:A" & Cells(Rows.Count, 1).End(xlUp).Row) ReDim arr(1 To Rng.Rows.Count, 1 To 1) arr1 = Rng.Value For I = 1 To UBound(arr) arr(I, 1) = Col.Item(arr1(I, 1)) Next Rng.Offset(0, 4).Value = arr Erase arr: Erase arr1: Col = Nothing End Sub
[/vba]
Если правильно понял, что именно должно получиться. Работать должно довольно прытко [vba]
Код
Private Function GetWeight(S) As Double If S Like "*кор" Then GetWeight = 14 * Val(Replace(S, ",", ".")) Else GetWeight = Val(Replace(S, ",", ".")) End Function
Sub tt() Dim Col As Object: Set Col = CreateObject("Scripting.Dictionary") Dim arr(), arr1(), Rng As Range, I As Long Set Rng = Range("A4:D" & Cells(Rows.Count, "H").End(xlUp).Row) arr = Rng.Value For I = 1 To UBound(arr) With Col If .exists(arr(I, 1)) Then .Item(arr(I, 1)) = .Item(arr(I, 1)) + GetWeight(arr(I, 4)) Else .Add Key:=arr(I, 1), Item:=GetWeight(arr(I, 4)) End If End With Next Set Rng = Range("A46:A" & Cells(Rows.Count, 1).End(xlUp).Row) ReDim arr(1 To Rng.Rows.Count, 1 To 1) arr1 = Rng.Value For I = 1 To UBound(arr) arr(I, 1) = Col.Item(arr1(I, 1)) Next Rng.Offset(0, 4).Value = arr Erase arr: Erase arr1: Col = Nothing End Sub