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.