MyTetra Share
Делитесь знаниями!
Объединение столбцов в массиве
Время создания: 16.03.2019 23:43
Текстовые метки: array, string, Работа с диапазонами ячеек и листами, Обработка массивов
Раздел: Разные закладки - VBA - Array
Запись: xintrea/mytetra_db_adgaver_new/master/base/1516786500er3zr75o5s/text.html на raw.githubusercontent.com


'словарь для массивов

Set DicArr = CreateObject("Scripting.Dictionary")

'DicArr.exists (strDate)

'цикл по временным массивам

For iArr = 1 To 9

'определяем столбец для массива

Select Case iArr

Case 1: iNbClnSource = 2 'Дата

Case 2: iNbClnSource = 3 'Тип

Case 3: iNbClnSource = 6 'Длит.

Case 4: iNbClnSource = 7 'Зона

Case 5: iNbClnSource = 9 'Конеч. размещ.

Case 6: iNbClnSource = 10 'Прич. остан.

Case 7: iNbClnSource = 12 'Комментарий

Case 8: iNbClnSource = 14 'Кнц

Case 9: iNbClnSource = 22 'Событие

End Select

'загрузка массива

'iNbClnSource + 1 'таблица начинается со второго столбца

aTemp = Range(.Cells(8, iNbClnSource + 1), .Cells(iNbRow, iNbClnSource + 1)).Value

'загрузка массива в словарь

DicArr.Add iArr, aTemp

Erase aTemp

Next iArr

Set DicArr = Nothing

'функция объединения массивов

aTemp = FnCombArr(DicArr)



'===========================================================================================

' ##### функция объединения по массивов столбцам

'принимает словарь равных массивов и собирает в один

'-------------------------------------------------------------------------------------------

Function FnCombArr(ByVal DicArr As Variant) As Variant

Dim aTempMain As Variant, aTemp As Variant

Dim iArr As Long

Dim i As Long


'если передан словарь

If TypeName(DicArr) = "Dictionary" Then

'определяем размер массива

aTemp = DicArr.Item(1)

ReDim aTempMain(1 To UBound(aTemp), 1 To DicArr.Count)

For iArr = 1 To DicArr.Count

aTemp = DicArr.Item(iArr)

jjj = TypeName(aTemp)

If IsArray(aTemp) Then

For i = LBound(aTempMain) To UBound(aTempMain)

aTempMain(i, iArr) = Trim(Application.Clean(aTemp(i, 1)))

Next i

End If

Erase aTemp

Next iArr

FnCombArr = aTempMain

Else

FnCombArr = ""

End If

End Function

'===========================================================================================

Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования