Получение массива значений по критерию и копирование его на лист - VBA

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Уважаемые. Пожалуйста помогите решить задачу? Есть табличка; В первом столбце - заказы, во втором соответствующее ему оборудование. Мне нужно загрузив табличку, например в словарь и запустив внешнюю программу отправить в неё первый заказ, потом открыв его вставить массив всего оборудования, что соответствует заказу (как вариант вставить на лист в столбик построчно) сохраняемся, переходим к следующему заказу... Я в словаре получаю, то что мне нужно, но оборудование у меня через запятую в одной строке. Как получить его в массив, построчно?

Решение задачи: «Получение массива значений по критерию и копирование его на лист»

textual
Листинг программы
Sub Масс_Зак2()
    Dim a, b, i&, k, t$, tt$, zakaz
    Dim el
 
    a = Selection.Value
    With CreateObject("scripting.dictionary")
        .comparemode = 1
        For i = 1 To UBound(a)
            t = a(i, 1)   'критерий, тут бы trim() ещё может нужен...
            If Not .exists(t) Then
                b = Application.Index(a, i, , 1)
                tt = b(2)
                Set b(2) = CreateObject("System.Collections.ArrayList")
                b(2).Add tt
            Else
                b = .Item(t)
                b(2).Add a(i, 2)
            End If
            .Item(t) = b
        Next
        i = 1
        ' Обозначим переменные для заказа
        For Each k In .keys
            b = .Item(k)
            zakaz = b(1)
            'получить Оборудование в массив и выгрузить его на лист.
 
'            For Each el In b(2)
                'Debug.Print zakaz & "-" & el
                i = i + 1
                Cells(i, 5) = zakaz
                Cells(i, 6).Resize(, b(2).Count) = b(2).toarray
'            Next
        Next
        Erase b
    End With
End Sub

Оцени полезность:

15   голосов , оценка 3.6 из 5
Похожие ответы