Получение массива значений по критерию и копирование его на лист - 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