Как сохранить двумерный массив ReDim в Excel VBA (2 простых способа)

  • Поделись Этим
Hugh West

Массив - это переменная, которая хранит одинаковые типы данных. Если есть только одна строка или один столбец данных, то он известен как одномерный массив. Однако, когда есть более одной строки и столбца, он называется двумерным массивом. Мы используем ReDim для изменения размера массива в VBA. Кроме того, мы используем функцию Сохранить ключевое слово с ReDim чтобы сохранить старые данные нетронутыми. В этой статье мы расскажем вам о том. 2 быстрые способы " Заповедник РеДим " a Двумерный массив в Excel VBA .

Скачать Практическое пособие

Макрос для ReDim Preserve 2D.xlsm

2 удобных подхода к сохранению двумерного массива ReDim в Excel VBA

Это базовый набор данных, созданный на основе Двумерный массив с тремя строками и двумя столбцами. Сначала мы создадим этот массив. Затем мы добавим к нему еще один столбец. Мы будем использовать " Заповедник РеДим ", чтобы сделать это. Кроме того, мы продемонстрируем, что произойдет, если мы не будем использовать это.

По умолчанию мы можем изменить размер только последнего измерения массива (т.е. столбцов или верхней границы). Мы транспонируем массив, затем изменим последнее измерение, а затем снова транспонируем, чтобы изменить размер обоих измерений массива Двумерный массив в Excel VBA.

1. ReDim Сохранение последнего измерения двумерного массива

Сначала мы определим Двумерный массив как динамический. Затем, используя ReDim оператора, мы создадим массив с тремя строками и двумя столбцами. Наконец, мы воспользуемся оператором ReDim еще раз с Сохранить ключевое слово для увеличения верхней границы двумерного массива.

Шаги:

  • Для начала нажмите ALT+F11 чтобы вызвать Модуль VBA В качестве альтернативы вы можете сделать это из окна Разработчик вкладка → выберите Visual Basic .
  • Затем, из Вставка вкладка → выберите Модуль Здесь мы введем код VBA.

  • Затем введите следующий код в Модуль окно.
 Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 Range("C6:D8").Value = Our_Array End Sub 

Разбивка кода VBA

  • Во-первых, мы вызываем Подпроцедура " Redim_Preserve_2D_Array_Row ".
  • Затем мы объявляем переменную Наш_массив как динамический массив.
  • Далее мы определяем размер массива. Нижняя граница равна 3 верхняя граница 2 и оба начинаются с 1 .
  • Затем мы присваиваем значения массиву.
  • После этого мы вводим значения в C6:D8 диапазон клеток.
  • После этого мы выполним код.
  • Итак, Сохранить сайт Модуль и нажмите Запускайте .

  • В результате он вернет значения в заданные диапазоны ячеек. Мы видим, что " Рейчел " находится в ряду 1 и колонка 1 положение, которое было определено как ( 1,1 ) в коде VBA.

  • Теперь мы изменим размер массива.
  • Итак, добавьте это к предыдущему коду и удалите первую строку Range.Value statement . Более того, как выглядит код, вы можете увидеть на снимке ниже.
 ReDim Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value = Our_Array 

  • Здесь мы увеличили верхнюю границу с ( 1 На 2 ) - ( 1 На 3 ) по 1 .
  • Затем мы добавили значения в массив.
  • Теперь, если мы выполним этот код, то увидим, что предыдущие значения не сохраняются. Он вернет пустое место для предыдущих значений.

  • Теперь мы можем исправить это, добавив Сохранить ключевое слово в Заявление ReDim .
  • Наконец, наш полный код будет выглядеть следующим образом.
 Option Explicit Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value =Our_Array End Sub 

  • Теперь, если мы Запускайте этот код, то вывод будет выглядеть следующим образом. Таким образом, мы " Заповедник РеДим "последнее измерение Двумерный массив в Excel VBA. Теперь следующий метод покажет вам, как " Заповедник РеДим " и изменить размер обоих измерений массива.

Читать далее: VBA для получения уникальных значений из столбца в массив в Excel (3 критерия)

Похожие чтения

  • Как назвать массив таблиц в Excel (с помощью простых шагов)
  • Excel VBA для чтения CSV-файла в массив (4 идеальных примера)
  • Как преобразовать диапазон в массив в Excel VBA (3 способа)
  • Excel VBA: удаление дубликатов из массива (2 примера)

2. ReDim Preserve Both Dimensions 2D Array в Excel VBA

В этом последнем методе мы покажем вам шаги по изменению размера и " Заповедник РеДим " the Двумерный массив Здесь мы будем использовать Транспонирование в VBA Если бы мы попытались изменить размер нижней границы массива в первом методе, то мы увидели бы " Подстрочный индекс вне диапазона " ошибка. Теперь, без лишних слов, давайте посмотрим, как мы можем исправить это и достичь нашей цели.

Шаги:

  • Во-первых, как показано в первом методе , поднимите Модуль окно.
  • Во-вторых, добавьте следующие строки кода в первый код.
 Our_Array = Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array 
  • Более того, код конечного метода выглядит следующим образом.
 Option Explicit Sub ReDim_Preserve_2D_Array_Both_Dimensions() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Our_Array.Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array End Sub 

Разбивка кода VBA

  • Во-первых, мы вызываем Подпроцедура " ReDim_Preserve_2D_Array_Both_Dimensions ".
  • Затем, остальные коды вплоть до Транспонирование в VBA функции такие же, как и в первом коде.
  • Здесь мы транспонируем массив.
  • Затем мы увеличиваем верхнюю границу массива.
  • После этого мы снова транспонируем массив. Поэтому, в конечном счете, это изменит нижнюю границу.
  • Далее мы вводим значения для массива измененного размера, сохраняя при этом старые данные.
  • Наконец, мы записываем значения в диапазон ячеек C6:E9 .
  • После этого, как показано в первом методе , Запускайте этот код.
  • Таким образом, мы можем представить, как код сохраняет Двумерный массив используя " Заповедник РеДим " и Транспонирование в VBA функция.

Читать далее: VBA для транспонирования массива в Excel (3 метода)

О чем следует помнить

  • Заповедник РеДим не может изменить нижнюю границу массива. Для этого нам необходимо использовать функцию Транспонировать функция.
  • Мы можем использовать только ReDim на динамических массивах.

Заключение

Мы показали вам два быстрых способа " Заповедник РеДим " a 2D массив Если вы столкнулись с какими-либо проблемами, связанными с этими методами, или у вас есть какие-либо отзывы для меня, не стесняйтесь оставлять комментарии ниже. Кроме того, вы можете посетить наш сайт ExcelWIKI для получения других статей, связанных с Excel. Спасибо за чтение, продолжайте совершенствоваться!

Хью Уэст — опытный тренер и аналитик Excel с более чем 10-летним опытом работы в отрасли. Он имеет степень бакалавра в области бухгалтерского учета и финансов и степень магистра делового администрирования. Хью страстно любит преподавать и разработал уникальный подход к обучению, которому легко следовать и который легко понять. Его экспертные знания Excel помогли тысячам студентов и специалистов по всему миру улучшить свои навыки и преуспеть в своей карьере. В своем блоге Хью делится своими знаниями со всем миром, предлагая бесплатные учебные пособия по Excel и онлайн-обучение, чтобы помочь отдельным лицам и компаниям полностью раскрыть свой потенциал.