Як змінити розмір 2D-масиву в Excel VBA (2 простих способи)

  • Поділитися Цим
Hugh West

Масив - це змінна, яка зберігає однотипні дані. Якщо є тільки один рядок або один стовпець даних, то він називається одновимірним масивом. Однак, коли є більше одного рядка і стовпця, то він називається двовимірним масивом. Ми використовуємо ReDim для зміни розміру масиву в VBA. Додатково використовується метод Заповідник ключове слово з символом ReDim зберегти старі дані недоторканими. У цій статті ви дізнаєтесь 2 швидкі шляхи до " Заповідник ReDim " a 2D масив в Excel VBA .

Завантажити Практичний посібник

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

2 зручних підходи до ReDim збереження 2D-масиву в Excel VBA

Це базовий набір даних, створений на основі 2D масив Спочатку створимо цей масив, а потім додамо до нього ще один стовпець. Для цього скористаємось командою " Заповідник ReDim "Крім того, ми продемонструємо, що станеться, якщо ми цим не скористаємося.

За замовчуванням ми можемо змінити розмір тільки останнього виміру масиву (тобто стовпців або верхньої межі). Ми транспонуємо масив, потім змінимо останній вимір, а потім знову транспонуємо, щоб змінити розмір обох вимірів масиву 2D масив в Excel VBA.

1. ReDim Збереження останнього виміру 2D масиву

Спочатку визначимо, що таке 2D масив Потім, використовуючи 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 Більш того, як виглядає код, ви можете побачити на знімку нижче.
 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 

  • Тепер, якщо ми Біжи цей код, то вивід буде таким. Таким чином, ми отримаємо " Заповідник ReDim "останній вимір 2D масив в Excel VBA... Тепер, наступний метод покаже вам, як " Заповідник ReDim " і змініть розмір обох вимірів масиву.

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

Схожі читання

  • Як присвоїти ім'я табличному масиву в Excel (з простими кроками)
  • Excel VBA для читання файлу CSV у масив (4 ідеальні приклади)
  • Як перетворити діапазон в масив в Excel VBA (3 способи)
  • Excel VBA: видалення дублікатів з масиву (2 приклади)

2. ReDim - збереження 2D-масиву в обох вимірах в Excel VBA

У цьому останньому методі ми покажемо вам кроки по зміні розміру і " Заповідник ReDim " the 2D масив Тут ми будемо використовувати 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 .
  • Після цього, як показано в першому способі , Біжи цей код.
  • Таким чином, ми можемо візуалізувати, як код зберігає 2D масив за допомогою кнопки " Заповідник ReDim " та VBA Транспонування функцію.

Читати далі: Транспонування масиву в Excel за допомогою VBA (3 способи)

Важливі моменти для запам'ятовування

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

Висновок

Ми показали вам два швидких способи " Заповідник ReDim " a 2D масив Якщо у вас виникли проблеми з цими методами або у вас є якісь побажання до мене, будь ласка, залишайте свої коментарі нижче. Крім того, ви можете відвідати наш сайт ExcelWIKI для отримання додаткової інформації про Excel. Дякуємо, що прочитали, продовжуйте вдосконалюватися!

Г’ю Вест — досвідчений тренер і аналітик Excel із понад 10-річним досвідом роботи в галузі. Він має ступінь бакалавра з бухгалтерського обліку та фінансів і ступінь магістра з ділового адміністрування. Г’ю має пристрасть до викладання та розробив унікальний підхід до викладання, який легко зрозуміти та дотримуватися. Його експертне знання Excel допомогло тисячам студентів і професіоналів у всьому світі вдосконалити свої навички та досягти успіху в кар’єрі. У своєму блозі Г’ю ділиться своїми знаннями зі світом, пропонуючи безкоштовні навчальні посібники з Excel та онлайн-навчання, щоб допомогти окремим особам і компаніям повністю розкрити свій потенціал.