SAS888
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору protazzz dneprcomp Сформировать одномерный массив из уникальных значений диапазона "A1:A100", не содержащий пустые значения, можно существенно проще (один цикл): Код: Sub SelectionFind() Dim i As Long, x As New Collection, mass() As String, a() a = Sheets("Лист3").[A1:A100].Value: ReDim mass(1 To 1) For i = 1 To UBound(a, 1) If a(i, 1) <> "" Then On Error Resume Next: x.Add a(i, 1), CStr(a(i, 1)) If Err = 0 Then mass(UBound(mass)) = a(i, 1): ReDim Preserve mass(1 To UBound(mass) + 1) Else: On Error GoTo 0 End If End If Next ReDim Preserve mass(1 To UBound(mass) - 1) End Sub | Сортировку массива (если нужно) можно сделать так: Код: Sub SortMassiv() Dim i As Long, j As Long, mass(1 To 100) As String, x For i = LBound(mass) To UBound(mass) - 1 For j = i + 1 To UBound(mass) If mass(i) > mass(j) Then x = mass(i): mass(i) = mass(j): mass(j) = x End If Next Next End Sub | Добавлено: jurris ferias Все делается существенно проще. Получить массив значений столбца "A" можно без всяких циклов одной командой: Код: With Sheets("Лист1") a = .Range(.[A1], .Cells(Rows.Count, "A").End(xlUp)).Value End With | В результате получим массив, размерностью a(x,1), где "x" - количество элементов 1-й размерности, равное номеру последней заполненной строки столбца "A" листа "Лист1". Аналогично, чтобы значения элементов массива a(x,1) вставить в столбец "B", можно воспользоваться: Код: With Sheets("Лист1") .Range(.[B1], .Cells(UBound(a, 1), "B")).Value = a End With |
| Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 05:17 04-06-2009 | Исправлено: SAS888, 05:21 04-06-2009 |
|