Страницы: 1
RSS
Как добавить в массив диапазон который имеет разрыв
 
Добрый день!
Споткнулся на ровном месте.
Необходимо передать в массив значения с 4 столбцов для дальнейшей работы с данными, обычно я приравнивал переменную к диапазону Range, но это работало с непрерывным диапазоном. А если диапазон имеет разрыв?
Изначально подумал что можно через Union объединить и приравнять к переменной, но так видимо она не работает.  Подскажите пожалуйста.
Спасибо!
 
Я обычно так и делал 4 параллельных массива. А при работе с массивами не особо напрягает это учитывать.
 
Можно переопределить размерность массива через ReDim Preserve, добавив значение второй размерности и потом циклом по массиву добавить данные в соответствующие элементы из заданного диапазона.
Еще вариант - запихнуть в массив непрерывный диапазон, и работать только с нужными элементами массива, а остальные игнорировать. :)
Изменено: Пытливый - 09.12.2019 12:46:38
Кому решение нужно - тот пример и рисует.
 
1 Никак
2 Создать несколько массивов, и работать с ними
3 Выполнить 1 часть п.2, создать массив нужной размерности, и переложить туда.
 
Цитата
Пытливый написал: ...запихнуть в массив непрерывный диапазон
:D  
Я тоже так подумал сделать) Но потом решил что это как то "колхозно" из разряда "в тупую"
 
Так всё может и не поместиться в память...
 
Зависит от расположения и объема данных, требований к работе, от настроения начальства и погоды в Арктике :)
Тут или забивать память неиспользуемыми даннми, или прогонять диапазоны циклами
Если память и быстродействие позволит, то в заборе в массив всего диапазона никакой "колхозности" не вижу. И, с другой стороны, если заполнение массива отдельными столбцами не займет много времени - формировать компактный массив.
А еще можно обрабатывать отдельно (если в задаче такое допустимо), перезаписывая массив.
 
Цитата
vikttur написал: Зависит от расположения и объема данных, требований к работе, от настроения начальства и погоды в Арктике
Повеселило

Решил сделать 4 разных массива
Код
For Z = 11 To LastCells
        If Cells(Z, 1) = "" And Cells(Z, 2) <> "в том числе" Then
       a(p) = Cells(Z, 5)
       B(p) = Cells(Z, 13)
       V(p) = Cells(Z, 18)
       G(p) = Cells(Z, 20)
       p = p + 1
       n = n + 1
       
        End If
       ReDim Preserve a(1 To n)
       ReDim Preserve B(1 To n)
       ReDim Preserve V(1 To n)
       ReDim Preserve G(1 To n)
    Next Z
Изменено: Kentavrik7 - 09.12.2019 14:31:56
Страницы: 1
Наверх