Jak zachować tablicę 2D w Excelu VBA (2 proste sposoby)

  • Udostępnij To
Hugh West

Tablica to zmienna, która przechowuje te same rodzaje danych.Jeśli jest tylko jeden wiersz lub jedna kolumna danych, to nazywamy ją tablicą jednowymiarową.Natomiast, gdy jest więcej niż jeden wiersz i kolumna, to nazywamy ją tablicą 2D.Używamy ReDim aby zmienić rozmiar tablicy w VBA. Dodatkowo używamy Zachować słowo kluczowe z ReDim aby zachować stare dane w nienaruszonym stanie. Ten artykuł pokaże ci 2 szybkie sposoby na " ReDim Preserve " a macierz 2D w Excel VBA .

Pobierz Zeszyt ćwiczeń

Makro do ReDim Preserve 2D.xlsm

2 Podręczne podejścia do ReDim Zachowanie tablicy 2D w Excelu VBA

Jest to bazowy zbiór danych utworzony z macierz 2D z trzema wierszami i dwiema kolumnami. Najpierw utworzymy tę tablicę, a następnie dodamy do niej kolejną kolumnę. Wykorzystamy do tego celu metodę " ReDim Preserve ", aby to zrobić. Dodatkowo zademonstrujemy, co się stanie, jeśli tego nie użyjemy.

Domyślnie możemy zmienić tylko ostatni wymiar tablicy (tj. kolumny lub górną granicę). Transponujemy tablicę, następnie zmieniamy ostatni wymiar, a potem znów transponujemy, aby zmienić oba wymiary tablicy macierz 2D w Excelu VBA.

1. ReDim Zachowanie ostatniego wymiaru tablicy 2D

Najpierw zdefiniujemy macierz 2D jako dynamiczne. Następnie, używając ReDim utworzymy tablicę o trzech wierszach i dwóch kolumnach. Na koniec użyjemy ReDim oświadczenie ponownie z Zachować słowo kluczowe aby zwiększyć górną granicę tablicy dwuwymiarowej.

Kroki:

  • Na początek naciśnij ALT+F11 aby przywołać Moduł VBA Alternatywnie można to zrobić z okna Deweloper zakładka → wybierz Visual Basic .
  • Następnie, z Wkładka zakładka → wybierz Moduł Tutaj wpiszemy kod VBA.

  • Następnie wpisz następujący kod w Moduł okno.
 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 

Podział kodu VBA

  • Po pierwsze, wywołujemy Procedura cząstkowa " Redim_Preserve_2D_Array_Row ".
  • Następnie deklarujemy zmienną Nasza_tablica jako tablicę dynamiczną.
  • Następnie definiujemy rozmiar tablicy. Dolna granica to. 3 górna granica wynosi 2 i obie zaczynają się od 1 .
  • Następnie przypisujemy wartości do tablicy.
  • Następnie wprowadzamy wartości do C6:D8 zakres komórek.
  • Po tym czasie wykonamy kod.
  • A więc, Zapisz the Moduł i nacisnąć Uruchom .

  • W efekcie zwróci wartości do zdefiniowanych zakresów komórek.Widzimy, że " Rachel " jest w rzędzie 1 i kolumna 1 pozycja, która została określona jako ( 1,1 ) w kodzie VBA.

  • Teraz zmienimy rozmiar tablicy.
  • Dodaj więc to do poprzedniego kodu i usuń pierwszy Oświadczenie Range.Value . Ponadto, jak wygląda kod, można zobaczyć na zrzucie poniżej.
 ReDim Nasza_tarcza(1 do 3, 1 do 3) Nasza_tarcza(1, 3) = "Teksas" Nasza_tarcza(2, 3) = "Missisipi" Nasza_tarcza(3, 3) = "Utah" Range("C6:E8").Value = Nasza_tarcza 

  • Tutaj zwiększyliśmy górną granicę z ( 1 Do 2 ) do ( 1 Do 3 ) przez 1 .
  • Następnie dodaliśmy wartości do tablicy.
  • Teraz, jeśli wykonamy ten kod, to zobaczymy, że poprzednie wartości nie są zachowane. Zwróci puste miejsce dla poprzednich wartości.

  • Teraz możemy to naprawić dodając Zachować słowo kluczowe do Oświadczenie ReDim .
  • Ostatecznie nasz pełny kod będzie wyglądał tak.
 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 

  • Teraz, jeśli Uruchom ten kod, to wyjście będzie wyglądało tak. Tak więc, będziemy " ReDim Preserve " ostatni wymiar macierz 2D w Excelu VBA... Teraz kolejna metoda pokaże Ci jak " ReDim Preserve " i zmienić rozmiar obu wymiarów tablicy.

Read More: VBA, aby uzyskać unikalne wartości z kolumny do tablicy w programie Excel (3 kryteria)

Podobne lektury

  • Jak nazwać tablicę w Excelu (proste kroki)
  • Excel VBA do odczytu pliku CSV w tablicę (4 idealne przykłady)
  • Jak przekonwertować zakres na tablicę w Excelu VBA (3 sposoby)
  • Excel VBA: Usuń duplikaty z tablicy (2 przykłady)

2) ReDim Zachowaj oba wymiary tablicy 2D w Excelu VBA

W tej ostatniej metodzie, pokażemy ci kroki, aby zmienić rozmiar i " ReDim Preserve " macierz 2D Tutaj będziemy używać VBA Transpozycja Jeśli próbowalibyśmy zmienić dolną granicę tablicy w pierwszej metodzie, to zobaczymy " Indeks dolny poza zakresem " błąd. Teraz, bez dalszych ceregieli, zobaczmy, jak możemy to naprawić i osiągnąć nasz cel.

Kroki:

  • Po pierwsze, jak pokazano w pierwszej metodzie , podnieść Moduł okno.
  • Po drugie, dodaj następujące linie kodu do pierwszego kodu.
 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 
  • Co więcej, kod dla metody końcowej wygląda tak.
 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 

Podział kodu VBA

  • Po pierwsze, wywołujemy Procedura cząstkowa " ReDim_Preserve_2D_Array_Both_Dimensions ".
  • Następnie reszta kodów aż do. VBA Transpozycja funkcja są takie same jak w pierwszym kodzie.
  • Tutaj dokonujemy transpozycji tablicy.
  • Następnie zwiększamy górną granicę tablicy.
  • Następnie ponownie transponujemy tablicę, dlatego ostatecznie zmieni ona dolną granicę.
  • Następnie wprowadzamy wartości dla zmienionej tablicy z zachowaniem starych danych.
  • Na koniec zapisujemy wartości do zakresu komórek C6:E9 .
  • Po tym, jak pokazano w pierwszej metodzie , Uruchom ten kod.
  • Możemy więc zwizualizować, jak kod zachowuje macierz 2D używając " ReDim Preserve " oraz. VBA Transpozycja funkcja.

Read More: VBA do Transpozycja Array w Excelu (3 Metody)

Rzeczy do zapamiętania

  • ReDim Preserve nie może zmienić dolnej granicy tablicy. Aby to zrobić, musimy użyć Transpozycja funkcja.
  • Możemy używać tylko ReDim na tablicach dynamicznych.

Wniosek

Pokazaliśmy Wam dwa szybkie sposoby na " ReDim Preserve " a 2D macierz Jeśli napotkasz jakieś problemy związane z tymi metodami lub masz dla mnie jakieś uwagi, zapraszam do komentowania poniżej. Ponadto możesz odwiedzić naszą stronę ExcelWIKI po więcej artykułów związanych z Excelem. Dzięki za przeczytanie, keep excelling!

Hugh West jest bardzo doświadczonym trenerem i analitykiem Excela z ponad 10-letnim doświadczeniem w branży. Posiada tytuł licencjata w dziedzinie rachunkowości i finansów oraz tytuł magistra administracji biznesowej. Hugh ma pasję do nauczania i opracował unikalne podejście do nauczania, które jest łatwe do naśladowania i zrozumienia. Jego specjalistyczna wiedza na temat programu Excel pomogła tysiącom studentów i profesjonalistów na całym świecie doskonalić swoje umiejętności i osiągać doskonałe wyniki w karierze. Za pośrednictwem swojego bloga Hugh dzieli się swoją wiedzą ze światem, oferując bezpłatne samouczki programu Excel i szkolenia online, aby pomóc osobom indywidualnym i firmom w pełni wykorzystać swój potencjał.