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.