Macierz VBA - tworzenie i więcej

Ten samouczek pokaże Ci, jak utworzyć macierz za pomocą tablicy w VBA.

Macierz to prostokątna tablica liczb z taką samą liczbą wierszy i kolumn. Macierz można utworzyć w VBA, wypełniając zmienne tablicowe i używając pętli VBA.

Tworzenie macierzy w VBA

123456789101112131415 Sub UtwórzSimpleMatrix()Dim matrix() jako liczba całkowitaDim x, i, j, k jako liczba całkowita'ponownie przyciemnij rozmiar tablicyMacierz ReDim (1 do 3, 1 do 3) jako liczba całkowitax = 1Dla i = 1 do 3Dla j = 1 do 3macierz(i,j) = xx = (x + 1)Następny jDalej ja' zwróć wynik do arkusza za jednym razemZakres("A1:C3") = macierzNapis końcowy

Uruchomienie powyższej procedury zwróci prostą macierz do zakresu („A1:C3”) do arkusza roboczego.

Konwertuj wektor jednorzędowy na macierz

Rozważ kolumnę liczb poniżej. Na pewnym etapie możesz chcieć przekonwertować kolumnę liczb na macierz.

Korzystając z poniższej funkcji możemy stworzyć macierz z listy liczb.

123456789101112131415161718192021 Funkcja Create_Matrix (Vector_Range jako zakres, No_Of_Cols_in_output jako liczba całkowita, liczba_of_Rows_in_output jako liczba całkowita) jako wariantWymnij tablicę temp. (1 do liczby kolumn na wyjściu, od 1 do liczby wierszy na wyjściu)Dim No_Of_Elements_In_Vector jako liczba całkowitaDim Col_Count jako liczba całkowita, Row_Count jako liczba całkowitaNo_Of_Elements_In_Vector = Zasięg_wektora.Liczba wierszy„Wyeliminuj warunki NULL”Jeśli zakres_wektora jest niczym, wyjdź z funkcjiJeśli No_Of_Cols_in_output = 0 to wyjdź z funkcjiJeśli liczba_rzędów_w_wyjściu = 0, to wyjdź z funkcjiJeśli No_Of_Elements_In_Vector = 0 to zakończ funkcjęDla Col_Count = 1 do No_Of_Cols_in_outputDla licznika_wierszy = 1 do liczby rzędów w_wyjściuTablica_temp(Liczba_kolumn, Liczba_wierszów) = Zasięg_wektora.Komórki(((Liczba_rzędów_w_wyjściu) * (Liczba_kolumn - 1) + Liczba_wierszów), 1)Liczba_następnych wierszyNastępny Col_CountUtwórz_Macierz = Temp_ArrayKoniec funkcji

Możemy utworzyć macierz w naszym arkuszu Excel, wywołując powyższą funkcję.

123 Sub ConvertToMatrix()Zakres("C1:H2") = Utwórz_Macierz(Zakres("A1:A10"), 2, 6)Napis końcowy

Konwertuj macierz na wektor jednorzędowy

Alternatywnie możesz chcieć przekonwertować macierz na pojedynczy wiersz. Rozważ poniższą macierz.

Korzystając z poniższej funkcji, możemy przekonwertować to na jednowymiarową tablicę.

12345678910111213141516171819202122 Funkcja Utwórz_wektor (zakres_macierzy jako zakres) jako wariantDim liczba_kolumn jako liczba całkowita, liczba_rzędów jako liczba całkowitaDim i jako liczba całkowitaDim j jako liczba całkowita'podnieś wiersze i kolumny z macierzyNo_of_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Matrix_Range.Rows.CountReDim Temp_Array (liczba_kolumn * liczba_wierszów)„Wyeliminuj warunki NULL”Jeśli Matrix_Range to nic, to wyjdź z funkcjiJeśli No_of_Cols = 0, Wyjdź z funkcjiJeśli No_Of_Rows = 0, to zakończ funkcję'przeprowadź pętlę przez tablicę - pierwszy elementDla j = 1 To No_Of_Rows'teraz przejdź przez drugi elementDla i = 0 To No_of_Cols - 1'przypisz do tymczasowej tablicy jednowymiarowejTablica_Temp((i * Liczba_wierszy) + j) = Zakres_Macierzy.Komórki(j, i + 1)Dalej jaNastępny jUtwórz_Wektor = Tablica_TempKoniec funkcji

Możemy teraz wywołać tę funkcję, korzystając z poniższej procedury.

1234567891011 Sub Generuj wektor()Dim Vector() jako wariantDim k jako liczba całkowitaDim liczba_elementów'pobierz tablicęVector = Utwórz_Wektor(Arkusze("Arkusz1").Zakres("A1:D5"))'przeprowadź pętlę przez tablicę i wypełnij arkuszDla k = 0 To UBound(Vector) - 1Arkusze("Arkusz1").Range("G1").Offset(k, 0).Value = Vector(k + 1)Następna kNapis końcowy

Ta procedura zwróci następujący wynik.

Używanie WorksheetFunction.MMULT do tworzenia macierzy macierzy

Rozważ poniższy arkusz kalkulacyjny.

Możemy skorzystać z poniższej procedury, aby obliczyć kwotę odsetek dla powyższej siatki na podstawie stopy procentowej i kwoty, którą osoba chce pożyczyć.

123456789101112 Użyj MMULT()Dim rngIntRate jako zakresDim rngAmtLoan As RangeDim Result() jako wariant'wypełnij nasz asortyment obiektówUstaw rngIntRate = Zakres("B4:B9")Ustaw rngAmtLoan = Zakres("C3:H3")'użyj formuły MMULT do wypełnienia tablicy wynikówWynik = WorksheetFunction.MMult(rngIntRate, rngAmtLoan)'wypełnij arkuszZakres("C4:H9") = WynikNapis końcowy

Zauważysz w powyższym arkuszu, że powyższa procedura wypełnia komórki wartościami, a nie formułami – patrz C4 na powyższej grafice – ma w sobie wartość 200, a nie formułę. Używając Funkcja arkusza roboczego Metoda zawsze zwraca do arkusza wartość statyczną, a nie formułę. Oznacza to, że w przypadku zmiany oprocentowania lub kwoty kredytu odpowiednie wartości w wypełnianej macierzy NIE BĘDZIE reszta.

Zamiast używać Arkusz roboczyFunkcja.MMULT, możesz użyć VBA, aby zastosować funkcję MMULT do komórki za pomocą FormułaArray metoda.

123 Wstaw MMULT()Zakres("C4:H9").FormulaArray = "=MMULT(B4:B9;C3:H3)"Napis końcowy

Zauważ, że teraz, gdy arkusz kalkulacyjny jest wypełniany, w komórkach używana jest formuła.

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave