Уважаемые форумчане, добрый вечер.
Столкнулся с проблемой формирования общего списка значений на основании нескольких второстепенных списков.
Есть 4 второстпенных списка:
Общий список должен сформироваться путем перечисления всех возможных вариантов сочетаний по второстепенным спискам.
При этом у "Названия товара" и "Поставщиков" есть характеристики, определяющими являются столбцы "Название товара" и "Поставщики".
Планировал это сделать с помощью VBA и массивов, но не могу сообразить как из 4-х массивов записать данные в один общий. Начал писать макрос, на на записи данных в общий массив остановился:
При этом есть отчетная форма для общего списка (она листе "Ведомость", порядок столбцов менять нельзя).
В качестве примера привел, то что должно в итоге получиться для Яблок и Груш. Один из столбцов ("Тип приоритета") должен формироваться по формуле (привел в файле).
Также для позиций с приоритетами 1-4 в столбцы "Кураторы" и "Телефон пост." должны присваиваться значения "Поставщика" и "Телефон кур." с приоритетом равным "Главный", затем эти строки должны менять цвет шрифта на серый.
Файл прилагаю, буду очень признателен за помощь.
Столкнулся с проблемой формирования общего списка значений на основании нескольких второстепенных списков.
Есть 4 второстпенных списка:
- Вид товара
- Название товара
- Поставщики
- Районы
Общий список должен сформироваться путем перечисления всех возможных вариантов сочетаний по второстепенным спискам.
При этом у "Названия товара" и "Поставщиков" есть характеристики, определяющими являются столбцы "Название товара" и "Поставщики".
Планировал это сделать с помощью VBA и массивов, но не могу сообразить как из 4-х массивов записать данные в один общий. Начал писать макрос, на на записи данных в общий массив остановился:
Код |
---|
Sub CL_fr() Dim t!: t = Timer 'включаем таймер Dim i_fr As Long, i_type, i_sp, i_r, i_CL, j, i Dim aType(), aFR(), aSP(), aR(), aData() ThisWorkbook.Worksheets("Исходные данные").Activate With ThisWorkbook.Worksheets("Исходные данные") i_type = .Cells(Rows.Count, 1).End(xlUp).Row - 1 'определение количества видов товаров i_fr = .Cells(Rows.Count, 3).End(xlUp).Row - 1 'определение количества видов фруктов i_sp = .Cells(Rows.Count, 7).End(xlUp).Row - 1 'определение количества поставщиков i_r = .Cells(Rows.Count, 11).End(xlUp).Row - 1 'определение количества районов i_CL = i_type * i_fr * i_sp * i_r 'определение количества позиций ведомости j = 9 aType = .Range(Cells(2, 1), Cells(i_type, 1)).Value aFR = .Range(Cells(2, 3), Cells(i_fr, 5)).Value aSP = .Range(Cells(2, 7), Cells(i_sp, 9)).Value aR = .Range(Cells(2, 11), Cells(i_r, 11)).Value End With ReDim aData(1 To i_CL, 1 To j) Debug.Print i_CL, j '-------------------------------------------------------------------------------------------------------------------------- For i = 1 To UBound(aData) 'копируем данные из исходных массивов в отчетный For j = 1 To UBound(aData, 2) 'aData(i, j) = Next j Next i MsgBox Timer - t End Sub |
При этом есть отчетная форма для общего списка (она листе "Ведомость", порядок столбцов менять нельзя).
В качестве примера привел, то что должно в итоге получиться для Яблок и Груш. Один из столбцов ("Тип приоритета") должен формироваться по формуле (привел в файле).
Также для позиций с приоритетами 1-4 в столбцы "Кураторы" и "Телефон пост." должны присваиваться значения "Поставщика" и "Телефон кур." с приоритетом равным "Главный", затем эти строки должны менять цвет шрифта на серый.
Файл прилагаю, буду очень признателен за помощь.