VBA Matrix - Creați și multe altele

Acest tutorial vă va arăta cum să creați o matrice folosind o matrice în VBA.

O matrice este o matrice dreptunghiulară de numere cu aceeași cantitate de rânduri și coloane. Puteți crea o matrice în VBA populând variabile Array și utilizând bucle VBA.

Crearea unei matrice în VBA

123456789101112131415 Sub CreateSimpleMatrix ()Dim matrix () Ca întregDim x, i, j, k Ca întreg'redimensionează dimensiunea matriceiMatricea ReDim (1 până la 3, 1 până la 3) ca număr întregx = 1Pentru i = 1 până la 3Pentru j = 1 până la 3matrice (i, j) = xx = (x + 1)Următorul jApoi eu'returnează rezultatul într-o singură datăGama ("A1: C3") = matriceSfârșitul Sub

Rularea procedurii de mai sus va readuce o matrice simplă la Range („A1: C3”) în foaia de lucru.

Convertiți vectorul cu un singur rând într-o matrice

Luați în considerare coloana numerelor de mai jos. S-ar putea să doriți la un moment dat să convertiți o coloană de numere într-o matrice.

Folosind funcția de mai jos, putem crea o matrice din lista numerelor.

123456789101112131415161718192021 Funcție Create_Matrix (Vector_Range As Range, No_Of_Cols_in_output As Integer, No_of_Rows_in_output As Integer) Ca VariantReDim Temp_Array (1 To No_Of_Cols_in_output, 1 To No_of_Rows_in_output)Dim No_Of_Elements_In_Vector Ca întregDim Col_Count As Integer, Row_Count As IntegerNo_Of_Elements_In_Vector = Vector_Range.Rows.Count„Eliminați condițiile NULLDacă Vector_Range nu este nimic, ieșiți din funcțieDacă No_Of_Cols_in_output = 0 atunci Ieșiți din funcțieDacă No_of_Rows_in_output = 0 atunci Ieșiți din funcțieDacă No_Of_Elements_In_Vector = 0 atunci Ieșiți din funcțiePentru Col_Count = 1 To No_Of_Cols_in_outputPentru Row_Count = 1 To No_of_Rows_in_outputTemp_Array (Col_Count, Row_Count) = Vector_Range.Cells (((No_of_Rows_in_output) * (Col_Count - 1) + Row_Count), 1)Următorul Row_CountUrmătorul Col_CountCreate_Matrix = Temp_ArrayFuncția de sfârșit

Putem crea matricea în foaia noastră Excel, apelând funcția de mai sus.

123 Sub ConvertToMatrix ()Range ("C1: H2") = Create_Matrix (Range ("A1: A10"), 2, 6)Sfârșitul Sub

Convertiți o matrice într-un vector cu un singur rând

Alternativ, poate doriți să convertiți o matrice într-un singur rând. Luați în considerare Matricea de mai jos.

Folosind funcția de mai jos, o putem converti într-o matrice cu o singură dimensiune.

12345678910111213141516171819202122 Funcția Create_Vector (Matrix_Range As Range) Ca variantăDim No_of_Cols as Integer, No_Of_Rows As IntegerDim i IntegerDim j Ca întreg'ridicați rândurile și coloanele din matriceNo_of_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Matrix_Range.Rows.CountReDim Temp_Array (No_of_Cols * No_Of_Rows)„Eliminați condițiile NULLDacă Matrix_Range nu este nimic, ieșiți din funcțieDacă No_of_Cols = 0 atunci Ieșiți din funcțieDacă No_Of_Rows = 0, atunci Ieșiți din funcție'loop through the array - primul elementPentru j = 1 la No_Of_RowsAcum parcurgeți al doilea elementPentru i = 0 To No_of_Cols - 1'atribuie unei matrici temporare cu o singură dimensiuneTemp_Array ((i * No_Of_Rows) + j) = Matrix_Range.Cells (j, i + 1)Apoi euUrmătorul jCreate_Vector = Temp_ArrayFuncția de sfârșit

Acum putem apela această funcție folosind procedura de mai jos.

1234567891011 Sub GenerateVector ()Dim Vector () Ca variantăDim k Ca întregAfișează nr_de_elemente'obține matriceaVector = Create_Vector (Sheets ("Sheet1"). Range ("A1: D5"))'parcurgeți matricea și completați foaiaPentru k = 0 la UBound (Vector) - 1Foi ("Sheet1"). Range ("G1"). Offset (k, 0). Valoare = Vector (k + 1)Următorul kSfârșitul Sub

Această procedură va returna următorul rezultat.

Folosind WorksheetFunction.MMULT pentru a crea un Matrix Array

Luați în considerare următoarea foaie de calcul.

Putem folosi procedura de mai jos pentru a calcula valoarea dobânzii pentru grila de mai sus pe baza ratei dobânzii și a sumei pe care persoana dorește să o împrumute.

123456789101112 Utilizare secundarăMMULT ()Dim rngIntRate As RangeDim rngAmtLoan As RangeDiminuează rezultatul () ca variantă„populează obiectele noastre de gamăSetați rngIntRate = Range ("B4: B9")Setați rngAmtLoan = Range ("C3: H3")'utilizați formula MMULT pentru a umple matricea de rezultateRezultat = WorksheetFunction.MMult (rngIntRate, rngAmtLoan)'populează foaiaRange ("C4: H9") = RezultatSfârșitul Sub

Veți observa în foaia de mai sus că procedura de mai sus populează celulele cu valori mai degrabă decât cu formule - vezi C4 în graficul de mai sus - are valoarea 200 în ea, nu o formulă. Folosind Foaie de lucruFuncție metoda returnează întotdeauna o valoare statică în foaia de lucru și nu o formulă. Aceasta înseamnă că, dacă rata dobânzii sau valoarea împrumutului se modifică, valorile corespunzătoare din matricea completată NU VOI Schimbare.

În loc să utilizați WorksheetFunction.MMULT, puteți utiliza VBA pentru a aplica funcția MMULT unei celule folosind FormulaArray metodă.

123 Sub InsertMMULT ()Interval ("C4: H9"). FormulaArray = "= MMULT (B4: B9, C3: H3)"Sfârșitul Sub

Observați că acum, când foaia de calcul este completată, se folosește o formulă în celule.

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave