Страницы: 1
RSS
Определить материалы, входящие в продукцию заказа
 
Добрый день. Не могу сообразить как автоматизировать работу с массивами.
Суть проблемы: Ежедневно приходит много заказов каждый заказ состоит из ряда продукций, а продукция состоит из материалов.
В заказе фигурирует только продукция поэтому материалы требуется подгружать вручную исходя из спецификации.
Требуется что бы эксель видя продукцию доставал с другой страницы материалы только входящий в продукцию этого заказа и выводил
это цельным списком отображая корректное количество. пример.xls (57 КБ)
Помогите советом.
 
dakine55, испоьлзуйте функцию ексель ВПР.
 
Не, ВПР там не годится.
Но если делать макросом - могу подсказать: сперва циклом по материалам собираете в словарь (с коллекцией) номера строк или непосредственно набор материалов с количеством для каждого экземпляра продукции (с коллекцией проще код), затем в цикле по заказам формируете результат - есть что, есть сколько штук, есть где взять уже без поиска материал и его количество.
 
Код
Option Explicit

Sub dakine55()    'коллекция в словаре
    Dim a, b, i&, t$, Dic As Object
    Dim el, x&

    With Sheets("Материалы")
        a = .Range("C3", .Cells(.Rows.Count, "A").End(xlUp)).Value
    End With

    Set Dic = CreateObject("Scripting.Dictionary")
    With Dic
        .CompareMode = 1
        For i = 1 To UBound(a)
            t = a(i, 3)
            If Not .exists(t) Then .Add t, New Collection
            .Item(t).Add i
        Next
    End With

    b = Sheets("Заказ").[a7].CurrentRegion.Value
    ReDim c(1 To UBound(a), 1 To 3)
    x = x + 1
    c(x, 1) = "Материалы"
    c(x, 2) = "кол-во"
    c(x, 3) = "Продукция"
    For i = 1 To UBound(b)
        t = b(i, 2)
        If Dic.exists(t) Then
            For Each el In Dic.Item(t)
                x = x + 1
                c(x, 1) = a(el, 1)
                c(x, 2) = a(el, 2) * b(i, 4)
                c(x, 3) = t
            Next
        End If
    Next

    With Workbooks.Add(1).Sheets(1).Cells(1).Resize(x, 3)
        .Value = c
        .Columns.AutoFit
    End With
End Sub
 
Нужно докрутить размерности исходников, а так , все работает.
По вопросам из тем форума, личку не читаю.
 
Off. Ух ты, уже до умножения матриц добрались...
Владимир
 
sokol92, Владимир, не добрались, а набрались :-) и давно, и это цветочки, вот там интереснее.
Изменено: БМВ - 08.10.2018 16:59:48
По вопросам из тем форума, личку не читаю.
 
Off. Здравствуйте, Михаил! Годика через полтора оценю (когда разберусь). :)  
Владимир
Страницы: 1
Наверх