Как да запазите 2D масив с ReDim в Excel VBA (2 лесни начина)

  • Споделя Това
Hugh West

Масивът е променлива, в която се съхраняват едни и същи видове данни. Ако има само един ред или една колона от данни, той е известен като едноизмерен масив. Когато обаче има повече от един ред и една колона, той се нарича двуизмерен масив. ReDim за промяна на размера на масив във VBA. Освен това използваме Запазете с ключовата дума ReDim за да запазите старите данни непокътнати. Тази статия ще ви покаже 2 бързи начини за " ReDim Preserve " a 2D масив в Excel VBA .

Изтегляне на работна тетрадка за практика

Макрос за ReDim Preserve 2D.xlsm

2 удобни подхода за запазване на 2D масив с ReDim в Excel VBA

Това е базовият набор от данни, създаден от 2D масив с три реда и две колони. Първо, ще създадем този масив. След това ще добавим още една колона към този масив. Ще използваме символа " ReDim Preserve "Освен това ще демонстрираме какво се случва, ако не използваме това.

По подразбиране можем да променяме размера само на последното измерение на масива (т.е. на колоните или на горната граница). Ще транспонираме масива, след това ще променим последното измерение и отново ще транспонираме, за да променим размера и на двете измерения на масива. 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) = "Рейчъл" Our_Array(2, 1) = "Рос" Our_Array(3, 1) = "Джоуи" 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 ".
  • След това декларираме променливата Our_Array като динамичен масив.
  • След това определяме размера на масива. Долната граница е 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) = "Тексас" Our_Array(2, 3) = "Мисисипи" Our_Array(3, 3) = "Юта" 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) = "Рейчъл" Our_Array(2, 1) = "Рос" Our_Array(3, 1) = "Джоуи" 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) = "Тексас" Our_Array(2, 3) = "Мисисипи" Our_Array(3, 3) = "Юта" Range("C6:E8").Value =Our_Array Край на Sub 

  • Сега, ако Изпълнявайте този код, тогава изходът ще бъде такъв. Така ще " ReDim Preserve " последното измерение на 2D масив в Excel VBA.. Сега следващият метод ще ви покаже как да " ReDim Preserve " и променете размера на двете измерения на масива.

Прочетете още: VBA за получаване на уникални стойности от колона в масив в Excel (3 критерия)

Подобни четива

  • Как да дадете име на масив от таблица в Excel (с лесни стъпки)
  • Excel VBA за четене на CSV файл в масив (4 идеални примера)
  • Как да конвертирате диапазон в масив в Excel VBA (3 начина)
  • Excel VBA: Премахване на дубликати от масив (2 примера)

2. ReDim Запазване на двете измерения на 2D масив в Excel VBA

В този последен метод ще ви покажем стъпките за промяна на размера и " ReDim Preserve " 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) = "Моника" Our_Array(4, 2) = 26 Our_Array(4, 3) = "Ню Мексико" 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) = "Рейчъл" Our_Array(2, 1) = "Рос" Our_Array(3, 1) = "Джоуи" 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) = "Тексас" Our_Array(2, 3) = "Мисисипи" Our_Array(3, 3) = "Юта" 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) = "Моника" Our_Array(4, 2) = 26 Our_Array(4, 3) = "Ню Мексико" Range("C6:E9").Value = Our_Array End Sub 

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

  • Първо, извикваме Подпроцедура " ReDim_Preserve_2D_Array_Both_Dimensions ".
  • След това останалите кодове до Транспониране на VBA са същите като в първия код.
  • Тук транспонираме масива.
  • Тогава увеличаваме горната граница на масива.
  • След това отново транспонираме масива. Следователно в крайна сметка това ще промени долната граница.
  • След това въвеждаме стойностите за променения размер на масива, като запазваме старите данни.
  • Накрая записваме стойностите в обхвата от клетки C6:E9 .
  • След това, както е показано в първия метод , Изпълнявайте този код.
  • По този начин можем да визуализираме как кодът запазва 2D масив с помощта на " ReDim Preserve " и Транспониране на VBA функция.

Прочетете още: VBA за транспониране на масив в Excel (3 метода)

Нещата, които трябва да запомните

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

Заключение

Показахме ви два бързи начина за " ReDim Preserve " a 2D масив в Excel VBA. Ако се сблъскате с някакви проблеми във връзка с тези методи или имате обратна връзка с мен, не се колебайте да коментирате по-долу. Освен това можете да посетите нашия сайт ExcelWIKI за още статии, свързани с Excel. Благодаря за четенето и продължавайте да постигате успехи!

Хю Уест е опитен обучител и анализатор на Excel с над 10 години опит в индустрията. Има бакалавърска степен по счетоводство и финанси и магистърска степен по бизнес администрация. Хю има страст към преподаването и е разработил уникален подход на преподаване, който е лесен за следване и разбиране. Неговите експертни познания по Excel са помогнали на хиляди студенти и професионалисти по целия свят да подобрят уменията си и да постигнат отлични резултати в кариерата си. Чрез своя блог Хю споделя знанията си със света, като предлага безплатни уроци за Excel и онлайн обучение, за да помогне на хората и фирмите да достигнат пълния си потенциал.