VBA Matrix - Ustvari in še več

Ta vadnica vam bo pokazala, kako z matriko v VBA ustvarite matriko.

Matrica je pravokotna matrika številk z enako količino vrstic in stolpcev. Matrico v VBA lahko ustvarite tako, da vnesete spremenljivke Array in uporabite zanke VBA.

Ustvarjanje matrike v VBA

123456789101112131415 Sub CreateSimpleMatrix ()Mat mat () kot celo številoDim x, i, j, k kot celo število'ponovno zatemni velikost matrikeMatrika ReDim (1 do 3, 1 do 3) kot celo številox = 1Za i = 1 do 3Za j = 1 do 3matrika (i, j) = xx = (x + 1)Naprej jNaprej i'vrne rezultat na list naenkratObseg ("A1: C3") = matrikaEnd Sub

Izvajanje zgornjega postopka bo vrnilo preprosto matriko v obseg ("A1: C3") na vaš delovni list.

Pretvorite vektor enojne vrstice v matriko

Razmislite o spodnjem stolpcu številk. Na neki stopnji boste morda želeli stolpec številk pretvoriti v matriko.

S spodnjo funkcijo lahko s seznama števil ustvarimo matriko.

123456789101112131415161718192021 Funkcija Create_Matrix (Vector_Range As Range, No_Of_Cols_in_output As Integer, No_of_Rows_in_output As Integer) Kot različicaReDim Temp_Array (1 do No_Of_Cols_in_output, 1 To No_of_Rows_in_output)Zatemni No_Of_Elements_In_Vector As IntegerZatemni Col_Count kot celo število, Row_Count kot celo številoNo_Of_Elements_In_Vector = Vector_Range.Rows.Count„Odpravite NULL pogojeČe Vector_Range ni nič, zapustite funkcijoČe je No_Of_Cols_in_output = 0, potem zapustite funkcijoČe je No_of_Rows_in_output = 0, potem zapustite funkcijoČe je No_Of_Elements_In_Vector = 0, potem zapustite funkcijoZa Col_Count = 1 Za No_Of_Cols_in_outputZa vrstico_številka = 1 do štTemp_Array (Col_Count, Row_Count) = Vector_Range.Cells (((No_of_Rows_in_output) * (Col_Count - 1) + Row_Count), 1)Naslednji Row_CountNaslednji Col_CountCreate_Matrix = Temp_ArrayKončana funkcija

Matrico lahko ustvarimo v Excelovem listu tako, da pokličemo zgornjo funkcijo.

123 Sub ConvertToMatrix ()Obseg ("C1: H2") = Create_Matrix (Razpon ("A1: A10"), 2, 6)End Sub

Pretvorite matriko v vektor enojne vrstice

Druga možnost je, da matriko pretvorite v eno vrstico. Razmislite o spodnji matrici.

S spodnjo funkcijo lahko to pretvorimo v enorazsežno matriko.

12345678910111213141516171819202122 Funkcija Create_Vector (Matrix_Range As Range) Kot variantaZatemni No_of_Cols kot celo število, No_Of_Rows kot celo številoDim i kot celo številoDim j kot celo število'poberi vrstice in stolpce iz matrikeNo_of_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Matrix_Range.Rows.CountReDim Temp_Array (No_of_Cols * No_Of_Rows)„Odpravite NULL pogojeČe Matrix_Range ni nič, zapustite funkcijoČe je No_of_Cols = 0, potem zapustite funkcijoČe je No_Of_Rows = 0, potem zapustite funkcijo'zanka skozi matriko - prvi elementZa j = 1 Za No_Of_Rows'zdaj prebrskaj drugi elementZa i = 0 do No_of_Cols - 1'dodeli začasni matriki z eno dimenzijoTemp_Array ((i * No_Of_Rows) + j) = Matrix_Range.Cells (j, i + 1)Naprej iNaprej jCreate_Vector = Temp_ArrayKončana funkcija

To funkcijo lahko zdaj pokličemo po spodnjem postopku.

1234567891011 Sub GenerateVector ()Dim Vector () kot variantaDim k kot celo številoZatemni št. Elementov'vzemi matrikoVector = Create_Vector (Sheets ("Sheet1"). Range ("A1: D5"))'prebrskajte matriko in napolnite listZa k = 0 Do UBound (vektor) - 1Listi ("List1"). Razpon ("G1"). Odmik (k, 0). Vrednost = vektor (k + 1)Naprej kEnd Sub

Ta postopek bo vrnil naslednji rezultat.

Uporaba WorksheetFunction.MMULT za ustvarjanje matričnega niza

Razmislite o naslednji preglednici.

Spodnji postopek lahko uporabimo za izračun zneska obresti za zgornjo mrežo na podlagi obrestne mere in zneska, ki si ga oseba želi izposoditi.

123456789101112 Podpora MMULT ()Zatemni rngIntRate As RangeZatemni rngAmtLoan As RangeZatemni rezultat () kot različico'naseljujejo naše objekte obsegaNastavi rngIntRate = Obseg ("B4: B9")Nastavi rngAmtLoan = Razpon ("C3: H3")'uporabite formulo MMULT za polnjenje matrike rezultatovRezultat = Funkcija delovnega lista.MMult (rngIntRate, rngAmtLoan)'napolni listObseg ("C4: H9") = RezultatEnd Sub

Na zgornjem listu boste opazili, da zgornji postopek celice napolni z vrednostmi in ne s formulami - glej C4 na zgornji sliki - v njem je vrednost 200, ne formula. Uporabljati Funkcija delovnega lista metoda vedno vrne statično vrednost na delovni list in ne formule. To pomeni, da če se obrestna mera ali znesek posojila spremeni, ustrezne vrednosti v izpolnjeni matrici NEBOM spremeniti.

Namesto da uporabite Delovni listFunction.MMULT, lahko z VBA uporabite funkcijo MMULT za celico z uporabo FormulaArray metoda.

123 Sub InsertMMULT ()Razpon ("C4: H9"). FormulaArray = "= MMULT (B4: B9, C3: H3)"End Sub

Upoštevajte, da se zdaj, ko je preglednica napolnjena, v celicah uporablja formula.

Vam bo pomagal razvoj spletnega mesta, ki si delijo stran s svojimi prijatelji

wave wave wave wave wave