VBA maatriks - loomine ja palju muud

See õpetus näitab teile, kuidas maatriksit luua maatriksi abil VBA -s.

Maatriks on ristkülikukujuline numbrimassiiv, millel on sama palju ridu ja veerge. Maatriksi saate luua VBA -s, täites massiivi muutujad ja kasutades VBA silmuseid.

Maatriksi loomine VBA -s

123456789101112131415 Sub CreateSimpleMatrix ()Dim maatriks () täisarvunaDim x, i, j, k As täisarv'hämardage massiivi suurus uuestiReDim maatriks (1 kuni 3, 1 kuni 3) täisarvunax = 1I = 1 kuni 3J = 1 kuni 3maatriks (i, j) = xx = (x + 1)Järgmine jEdasi i'tagastage tulemus ühe korraga leheleVahemik ("A1: C3") = maatriksEnd Sub

Ülaltoodud protseduuri käivitamine tagastab teie töölehele vahemiku (“A1: C3”) lihtsa maatriksi.

Teisendage ühe rea vektor maatriksiks

Mõelge allolevale numbrite veerule. Võimalik, et soovite mingil etapil numbrite veeru maatriksiks teisendada.

Kasutades allolevat funktsiooni, saame numbrite loendist maatriksi luua.

123456789101112131415161718192021 Funktsioon Create_Matrix (Vector_Range kui vahemik, No_Of_Cols_in_output kui täisarv, No_of_Rows_in_output kui täisarv) VariandinaReDim Temp_Array (1 To No_Of_Cols_in_output, 1 To No_of_Rows_in_output)Dim No_Of_Elements_In_Vector kui täisarvDim Col_Count as Integer, Row_Count as täisarvNo_Of_Elements_In_Vector = Vector_Range.Rows.Count"Likvideerida NULL tingimusedKui Vector_Range pole midagi, siis väljuge funktsioonistKui No_Of_Cols_in_output = 0, siis väljuge funktsioonistKui No_of_Rows_in_output = 0, siis väljuge funktsioonistKui No_Of_Elements_In_Vector = 0, siis väljuge funktsioonistCol_Count = 1 To No_Of_Cols_in_putputRida_arvestus = 1 Väljundi_arvu_arvudTemp_Array (Col_Count, Row_Count) = Vector_Range.Cells ((((No_of_Rows_in_output) * (Col_Count - 1) + Row_Count), 1)Järgmine rida_arvJärgmine veergCreate_Matrix = Temp_ArrayLõppfunktsioon

Maatriksi saame luua oma Exceli lehel, kutsudes ülaltoodud funktsiooni.

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

Teisendage maatriks üherealiseks vektoriks

Teise võimalusena võiksite maatriksi teisendada üherealiseks. Mõelge allpool olevale maatriksile.

Kasutades allolevat funktsiooni, saame selle teisendada ühemõõtmeliseks massiiviks.

12345678910111213141516171819202122 Funktsioon Create_Vector (maatriksi_vahemik vahemikuna) variandinaDim No_of_Cols täisarvuna, No_Of_Rows täisarvunaDim i As täisarvDim j As täisarv'korjage maatriksist read ja veerudNo_of_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Matrix_Range.Rows.CountReDim Temp_Array (No_of_Cols * No_Of_Rows)"Likvideerida NULL tingimusedKui Matrix_Range pole midagi, siis väljuge funktsioonistKui No_of_Cols = 0, siis väljuge funktsioonistKui No_Of_Rows = 0, siis väljuge funktsioonist'silmus läbi massiivi - esimene elementJ = 1 jaoks No_Of_Rows'nüüd läbi teise elemendiI = 0 jaoks No_of_Cols - 1'määrata ühe mõõtmega ajutisele massiivileTemp_Array ((i * No_Of_Rows) + j) = Matrix_Range. Lahtrid (j, i + 1)Edasi iJärgmine jCreate_Vector = Temp_ArrayLõppfunktsioon

Nüüd saame seda funktsiooni nimetada alltoodud protseduuri abil.

1234567891011 Sub GenerateVector ()Dim Vector () VariantinaDim k As täisarvHämardage elementide arvu'saada massiivVector = Create_Vector (Sheets ("Sheet1"). Vahemik ("A1: D5"))'ring läbi massiivi ja täitke lehtK = 0 jaoks UBound (vektor) - 1Arvutustabelid ("leht 1"). Vahemik ("G1"). Nihe (k, 0) .Väärtus = vektor (k + 1)Järgmine kEnd Sub

See protseduur tagastab järgmise tulemuse.

Töölehe Function.MMULT kasutamine maatriksmassiivi loomiseks

Kaaluge järgmist arvutustabelit.

Võime kasutada alltoodud protseduuri, et arvutada ülaltoodud võrgu intressimäär intressimäära ja summa järgi, mida inimene soovib laenata.

123456789101112 AlamkasutusMMULT ()Dim rngIntRate As RangeDim rngAmtLoan As RangeTulemus () Variandina'asustada meie levilaobjekteMäära rngIntRate = Vahemik ("B4: B9")Määra rngAmtLoan = Vahemik ("C3: H3")'kasutage tulemuste massiivi täitmiseks MMULT valemitTulemus = WorksheetFunction.MMult (rngIntRate, rngAmtLoan)'täitke lehtVahemik ("C4: H9") = tulemusEnd Sub

Ülaltoodud lehel märkate, et ülaltoodud protseduur täidab lahtrid väärtuste, mitte valemitega - vt ülaltoodud graafikust C4 - selle väärtus on 200, mitte valem. Kasutades TöölehtFunktsioon meetod tagastab töölehele alati staatilise väärtuse, mitte valemit. See tähendab, et kui intressimäär või laenusumma peaks muutuma, siis vastavad väärtused täidetud maatriksis EI TEE muutus.

Selle asemel, et kasutada TöölehtFunktsioon.MULT, saate kasutada VBA -d, et rakendada MMULT -funktsioon lahtrile, kasutades FormulaArray meetod.

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

Pange tähele, et nüüd, kui arvutustabel on täidetud, kasutatakse lahtrites valemit.

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave