VBA Matrix - Stvaranje i više

Ovaj vodič će vam pokazati kako stvoriti matricu pomoću polja u VBA.

Matrica je pravokutni niz brojeva s istim brojem redaka i stupaca. Možete stvoriti matricu u VBA popunjavanjem varijabli niza i korištenjem petlji VBA.

Stvaranje matrice u VBA

123456789101112131415 Sub CreateSimpleMatrix ()Dim matrica () Kao cijeli brojDim x, i, j, k Kao cijeli broj'ponovno zatamni veličinu nizaReDim matrica (1 do 3, 1 do 3) kao cijeli brojx = 1Za i = 1 do 3Za j = 1 do 3matrica (i, j) = xx = (x + 1)Sljedeće jSljedeći i'vratite rezultat na listu u jednom potezuRaspon ("A1: C3") = matricaKraj podm

Izvođenje gore navedenog postupka vratit će jednostavnu matricu u raspon (“A1: C3”) na vaš radni list.

Pretvorite vektor jednoga reda u matricu

Razmotrite donji stupac brojeva. Možda ćete u jednoj fazi poželjeti pretvoriti stupac brojeva u matricu.

Pomoću donje funkcije možemo stvoriti matricu s popisa brojeva.

123456789101112131415161718192021 Funkcija Create_Matrix (Vector_Range As Range, No_Of_Cols_in_output As Integer, No_of_Rows_in_output As Integer) Kao varijantaReDim Temp_Array (1 do No_Of_Cols_in_output, 1 To No_of_Rows_in_output)Dim No_Of_Elements_In_Vector As IntegerZatamni Col_Count kao cijeli broj, Row_Count kao cijeli brojNo_Of_Elements_In_Vector = Vector_Range.Rows.Count'Uklonite NULL uvjeteAko Vector_Range nije ništa, izađite iz funkcijeAko je No_Of_Cols_in_output = 0 Zatim izađite iz funkcijeAko je No_of_Rows_in_output = 0, tada izađite iz funkcijeAko je No_Of_Elements_In_Vector = 0, tada izađite iz funkcijeZa Col_Count = 1 do No_Of_Cols_in_outputZa red_broj = 1 do broj_redova_u_izlazuTemp_Array (Col_Count, Row_Count) = Vector_Range.Cells ((((No_of_Rows_in_output) * (Col_Count - 1) + Row_Count), 1)Sljedeći red_brojSljedeći Col_CountCreate_Matrix = Temp_ArrayZavršna funkcija

Matricu možemo stvoriti u našem Excel listu pozivanjem gornje funkcije.

123 Sub ConvertToMatrix ()Raspon ("C1: H2") = Create_Matrix (Raspon ("A1: A10"), 2, 6)Kraj podm

Pretvorite matricu u vektor jednog retka

Alternativno, možda želite pretvoriti matricu u jedan red. Razmotrite Matricu u nastavku.

Koristeći donju funkciju, možemo to pretvoriti u niz s jednom dimenzijom.

12345678910111213141516171819202122 Funkcija Create_Vector (Matrix_Range As Range) Kao varijantaDim No_of_Cols As Integer, No_Of_Rows As IntegerDim i Kao cijeli brojDim j Kao cijeli broj'pokupite retke i stupce iz matriceNo_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Matrix_Range.Rows.CountReDim Temp_Array (No_of_Cols * No_Of_Rows)'Uklonite NULL uvjeteAko Matrix_Range nije ništa, izađite iz funkcijeAko je No_of_Cols = 0, tada izađite iz funkcijeAko je No_Of_Rows = 0, tada izađite iz funkcije'petlja kroz niz - prvi elementZa j = 1 Za No_O_Rows'sada prođite kroz drugi elementZa i = 0 do No_of_Cols - 1'dodijeliti privremenom nizu s jednom dimenzijomTemp_Array ((i * No_Of_Rows) + j) = Matrix_Range.Cells (j, i + 1)Sljedeći iSljedeće jCreate_Vector = Temp_ArrayZavršna funkcija

Ovu funkciju sada možemo pozvati prema dolje navedenom postupku.

1234567891011 Sub GenerateVector ()Dim Vector () kao varijantaDim k Kao cijeli brojDim No_of_Elements'uzmi nizVector = Create_Vector (Sheets ("Sheet1"). Range ("A1: D5"))'prođite kroz niz i popunite listZa k = 0 Za UBound (vektor) - 1Listovi ("List1"). Raspon ("G1"). Odmak (k, 0) .Vrijednost = vektor (k + 1)Sljedeće kKraj podm

Ovaj postupak će vratiti sljedeći rezultat.

Korištenje WorksheetFunction.MMULT za stvaranje matričnog niza

Razmotrite sljedeću proračunsku tablicu.

Pomoću dolje navedenog postupka možemo izračunati iznos kamate za gornju tablicu na temelju kamatne stope i iznosa koji osoba želi posuditi.

123456789101112 Pomoćna upotrebaMMULT ()Priguši rngIntRate kao rasponDim rngAmtLoan As RangeZatamni rezultat () kao varijanta'popuniti naše objekte rasponaPostavi rngIntRate = Raspon ("B4: B9")Postavi rngAmtLoan = Raspon ("C3: H3")'upotrijebite formulu MMULT za popunjavanje matrice rezultataRezultat = Funkcija radnog lista.MMult (rngIntRate, rngAmtLoan)'popunite listRaspon ("C4: H9") = RezultatKraj podm

Primijetit ćete na gornjoj stranici da gornji postupak popunjava ćelije vrijednostima, a ne formulama - pogledajte C4 na gornjoj slici - u njemu je vrijednost 200, a ne formula. Koristiti Funkcija radnog lista method uvijek vraća statičku vrijednost na radni list, a ne formulu. To znači da ako se promijeni kamatna stopa ili iznos kredita, odgovarajuće vrijednosti u ispunjenoj matrici NEĆE promijeniti.

Umjesto da koristite Funkcija radnog lista.MMULT, možete koristiti VBA za primjenu MMULT funkcije na ćeliju pomoću FormulaArray metoda.

123 Sub umetakMMULT ()Raspon ("C4: H9"). FormulaArray = "= MMULT (B4: B9, C3: H3)"Kraj podm

Primijetite da se sada, kada se proračunska tablica popuni, u ćelijama koristi formula.

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave