VBA Matrix - Luo ja muuta

Tämä opetusohjelma näyttää, kuinka voit luoda matriisin VBA: n matriisin avulla.

Matriisi on suorakulmainen joukko numeroita, joilla on sama määrä rivejä ja sarakkeita. Voit luoda matriisin VBA: ssa täyttämällä Array -muuttujat ja käyttämällä VBA -silmukoita.

Matriisin luominen VBA: ssa

123456789101112131415 Sub CreateSimpleMatrix ()Dim matriisi () kokonaislukunaDim x, i, j, k kokonaislukunahimmentää taulukon kokoa uudelleenReDim -matriisi (1 - 3, 1 - 3) kokonaislukunax = 1I = 1 - 3Jos j = 1 - 3matriisi (i, j) = xx = (x + 1)Seuraava jSeuraavaksi minäpalauta tulos arkille yhdellä kertaaAlue ("A1: C3") = matriisiEnd Sub

Yllä olevan menettelyn suorittaminen palauttaa yksinkertaisen matriisin laskentataulukon alueeseen ("A1: C3").

Muunna yksirivinen vektori matriisiksi

Harkitse alla olevaa numerosaraketta. Voit jossain vaiheessa haluta muuntaa numerosarakkeen matriisiksi.

Alla olevan funktion avulla voimme luoda matriisin numeroiden luettelosta.

123456789101112131415161718192021 Toiminto Create_Matrix (Vector_Range as Range, No_Of_Cols_in_output as Integer, No_of_Rows_in_output as Integer) VarianttinaReDim Temp_Array (1 kohteeseen No_Of_Cols_in_output, 1 To No_of_Rows_in_output)Dim No_Of_Elements_In_Vector kokonaislukunaDim Col_Count as Integer, Row_Count as IntegerNo_Of_Elements_In_Vector = Vector_Range.Rows.Count'Poista NULL -ehdotJos Vector_Range ei ole mitään, sulje toimintoJos No_Of_Cols_in_output = 0, Lopeta toimintoJos No_of_Rows_in_output = 0, Lopeta toimintoJos No_Of_Elements_In_Vector = 0, sulje toimintoCol_Count = 1 To No_Of_Cols_in_outputRivi_laskulle = 1 Ei_rivien_lähdölleTemp_Array (Col_Count, Row_Count) = Vector_Range.Cells ((((No_of_Rows_in_output) * (Col_Count - 1) + Row_Count), 1)Seuraava rivi_laskSeuraava Col_CountCreate_Matrix = Temp_ArrayLopeta toiminto

Voimme luoda matriisin Excel -taulukossamme kutsumalla yllä olevaa toimintoa.

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

Muunna matriisi yksiriviseksi vektoriksi

Vaihtoehtoisesti voit halutessasi muuntaa matriisin yhdeksi riviksi. Harkitse alla olevaa matriisia.

Käyttämällä alla olevaa funktiota voimme muuntaa tämän yhden ulottuvuuden matriisiksi.

12345678910111213141516171819202122 Toiminto Create_Vector (Matrix_Range As Range) VaihtoehtonaDim No_of_Cols kokonaislukuna, No_Of_Rows kokonaislukunaDim i Kuten kokonaislukuDim j Kokonaislukuna'poimi rivit ja sarakkeet matriisistaNo_of_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Matrix_Range.Rows.CountReDim Temp_Array (No_of_Cols * No_Of_Rows)'Poista NULL -ehdotJos Matrix_Range ei ole mitään, sulje toimintoJos No_of_Cols = 0, sulje toimintoJos No_Of_Rows = 0, sulje toiminto'silmukan matriisin läpi - ensimmäinen elementtiJ = 1 No_Of_Rows'selaa nyt läpi toinen elementtiSillä i = 0 No_of_Cols - 1'määrittää yhden ulottuvuuden väliaikaisen taulukonTemp_Array ((i * No_Of_Rows) + j) = Matrix_Range.Solu (j, i + 1)Seuraavaksi minäSeuraava jCreate_Vector = Väliaikainen taulukkoLopeta toiminto

Voimme nyt kutsua tätä toimintoa alla olevan menettelyn mukaisesti.

1234567891011 Sub GenerateVector ()Dim Vector () VarianttinaDim k Kuten kokonaislukuDim Ei_elementtejä'hanki taulukkoVector = Create_Vector (Sheets ("Sheet1"). Alue ("A1: D5"))'kierrä taulukon läpi ja täytä arkkiJos k = 0 UBoundiin (vektori) - 1Arkit ("Sheet1"). Alue ("G1"). Siirtymä (k, 0). Arvo = Vektori (k + 1)Seuraava kEnd Sub

Tämä toimenpide palauttaa seuraavan tuloksen.

Luo Matrix -taulukko käyttämällä WorksheetFunction.MMULT -toimintoa

Harkitse seuraavaa laskentataulukkoa.

Voimme laskea yllä olevan menettelyn avulla yllä olevan taulukon koron koron ja lainaamaan haluamasi summan perusteella.

123456789101112 AlikäyttöMMULT ()Dim rngIntRate as RangeDim rngAmtLoan As RangeDim Tulos () Varianttina'täyttävät valikoima -objektimmeAseta rngIntRate = Alue ("B4: B9")Aseta rngAmtLoan = Alue ("C3: H3")'käytä MMULT -kaavaa tulostaulukon täyttämiseenTulos = WorksheetFunction.MMult (rngIntRate, rngAmtLoan)'täytä arkkiAlue ("C4: H9") = TulosEnd Sub

Huomaat yllä olevassa taulukossa, että yllä oleva menettely täyttää solut arvoilla eikä kaavoilla - katso yllä oleva kuva C4 - siinä on arvo 200, ei kaava. Käyttämällä LaskentataulukkoToiminto menetelmä palauttaa aina staattisen arvon laskentataulukkoon eikä kaavaa. Tämä tarkoittaa, että jos korko tai lainasumma muuttuu, vastaavat arvot täytetyssä matriisissa EI muuttaa.

Käyttämisen sijasta Tehtävä.MULT, voit käyttää VBA: ta käyttääksesi MMULT -toimintoa soluun käyttämällä FormulaArray menetelmä.

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

Huomaa, että nyt kun laskentataulukko täytetään, soluissa käytetään kaavaa.

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave