Тема: Как "ходить" по динамическому массиву

Как "ходить" по динамическому массиву и находить количество нужных блоков с определенным набором атрибутов????
:)
Подскажите пожалуйста
:)

Re: Как "ходить" по динамическому массиву

Ходить нужно осторожно! Что бы атрибуты случайно не раздавить!:))

Re: Как "ходить" по динамическому массиву

2 Дарья
Задайте нормально вопрос. А то не понятно что за массив, какие атрибуты и т.п.

Re: Как "ходить" по динамическому массиву

> Дарья
Если у тебя первый элемент в субсписках это
Handle или ObjectID блока, а остальные
элементы - значения атрибутов, то можно попробовать
такой вариант

Option Explicit
'Test
Sub RemoveEqual()
Dim ar(3, 3)
' master array (first element must be a block Handle or block ObjectID)
' the rest elements are attribute values:
ar(0, 0) = "F2D": ar(0, 1) = "uh": ar(0, 2) = "oh": ar(0, 3) = "ah"
ar(1, 0) = "D3G": ar(1, 1) = "nif": ar(1, 2) = "nuf": ar(1, 3) = "naf"
ar(2, 0) = "N1H": ar(2, 1) = "uh": ar(2, 2) = "oh": ar(2, 3) = "ah"
ar(3, 0) = "F4K": ar(3, 1) = "eh": ar(3, 2) = "nah": ar(3, 3) = "vah"
' array to compare with:
Dim match(2)
match(0) = "uh": match(1) = "oh": match(2) = "ah"
If UBound(ar, 2) - 1 <> UBound(match) Then
MsgBox "There are not equal dimensions of the arrays"
Exit Sub
End If
Dim result()
' returned array
result = ReturnDupes(ar, match)
Dim i
Dim msg As String
For i = 0 To UBound(result)
msg = msg & result(i) & vbCr
Next
MsgBox msg
End Sub
Function ReturnDupes(ByVal ar As Variant, ByVal match As Variant) As Variant
' return the first elements of dynamic array in case if
' the all of the rest elemements of the every single subarray
' in them are identical to all elements of the array
' to compare with
Dim ret()
Dim i, j, k
For i = 0 To UBound(ar, 1)
Dim check As Boolean
check = True
For j = 1 To UBound(ar, 2)
If ar(i, j) <> match(j - 1) Then
check = False
End If
Next
If check Then
ReDim Preserve ret(k)
ret(k) = ar(i, 0)
k = k + 1
End If
Next
ReturnDupes = ret
End Function

~'J'~

Re: Как "ходить" по динамическому массиву

> Fatty
Да нет,Handle или ObjectID здесь непричем. Динамический массив типа Ar(X)(Y)As Variant, X- количество марок в списке, Y- количество столбцов (т.е. Ar(i)(0)- марка, Ar(i)(1)- обозначение/N чертежа/, Ar(i)(n)- количество; ну и т.д.). Дарье просто надо исходя из значений одних "ячеек" выцепить значения других (т.е. зная, к примеру, марку и наименование -получить значение количества)

Re: Как "ходить" по динамическому массиву

> AlexV
Тогда по-русски это просто называется
группировкой массива с суммированием
Дерзай сам, у меня времени нема больше :)
~'J'~