Ce tutoriel va vous montrer comment créer une matrice à l'aide d'un tableau en VBA.
Une matrice est un tableau rectangulaire de nombres avec le même nombre de lignes et de colonnes. Vous pouvez créer une matrice dans VBA en renseignant des variables Array et en utilisant des boucles VBA.
Créer une matrice en VBA
123456789101112131415 | Sous-CréerSimpleMatrix()Dim matrice () en tant qu'entierDim x, i, j, k As Integer're-dim la taille du tableauMatrice ReDim (1 à 3, 1 à 3) en tant qu'entierx = 1Pour i = 1 à 3Pour j = 1 à 3matrice(i, j) = xx = (x + 1)j suivantEnsuite je' renvoie le résultat à la feuille en une seule foisPlage("A1:C3") = matriceFin du sous-marin |
L'exécution de la procédure ci-dessus renverra une matrice simple à Range ("A1:C3") dans votre feuille de calcul.
Convertir un vecteur à une seule ligne en une matrice
Considérez la colonne de nombres ci-dessous. Vous pouvez à un moment donné souhaiter convertir une colonne de nombres en une matrice.
En utilisant la fonction ci-dessous, nous pouvons créer une matrice à partir de la liste de nombres.
123456789101112131415161718192021 | Fonction Create_Matrix (Vector_Range As Range, No_Of_Cols_in_output As Integer, No_of_Rows_in_output As Integer) As VariantReDim Temp_Array (1 à No_Of_Cols_in_output, 1 à No_of_Rows_in_output)Dim No_Of_Elements_In_Vector en tant qu'entierDim Col_Count en tant qu'entier, Row_Count en tant qu'entierNo_Of_Elements_In_Vector = Vector_Range.Rows.Count'Élimine les conditions NULLSi Vector_Range n'est rien, alors quitter la fonctionSi No_Of_Cols_in_output = 0 alors quitter la fonctionSi No_of_Rows_in_output = 0 alors quitter la fonctionSi No_Of_Elements_In_Vector = 0, alors quitter la fonctionPour Col_Count = 1 à No_Of_Cols_in_outputPour Row_Count = 1 à No_of_Rows_in_outputTemp_Array(Col_Count, Row_Count) = Vector_Range.Cells(((No_of_Rows_in_output) * (Col_Count - 1) + Row_Count), 1)Row_Count suivantCol_Count suivantCreate_Matrix = Temp_ArrayFonction de fin |
Nous pouvons créer la matrice dans notre feuille Excel, en appelant la fonction ci-dessus.
123 | Sous-convertir en matrice()Plage("C1:H2") = Créer_Matrice(Plage("A1:A10"), 2, 6)Fin du sous-marin |
Convertir une matrice en un vecteur à une seule ligne
Alternativement, vous pouvez convertir une matrice en une seule ligne. Considérez la matrice ci-dessous.
En utilisant la fonction ci-dessous, nous pouvons le convertir en un tableau à une seule dimension.
12345678910111213141516171819202122 | Fonction Create_Vector (Matrix_Range As Range) As VariantDim No_of_Cols en tant qu'entier, No_Of_Rows en tant qu'entierDiminuer en tant qu'entierDim j en tant qu'entier'relève les lignes et les colonnes de la matriceNo_of_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Matrix_Range.Rows.CountReDim Temp_Array (No_of_Cols * No_Of_Rows)'Élimine les conditions NULLSi Matrix_Range n'est rien, alors quitter la fonctionSi No_of_Cols = 0 alors fonction de sortieSi No_Of_Rows = 0, alors la fonction de sortie'boucle dans le tableau - le premier élémentPour j = 1 à No_Of_Rows'maintenant en boucle sur le deuxième élémentPour i = 0 à No_of_Cols - 1'affecter à un tableau temporaire à dimension uniqueTemp_Array((i * No_Of_Rows) + j) = Matrix_Range.Cells(j, i + 1)Ensuite jej suivantCreate_Vector = Temp_ArrayFonction de fin |
Nous pouvons maintenant appeler cette fonction en utilisant la procédure ci-dessous.
1234567891011 | Sous GénérerVector()Dim Vector() comme varianteDim k en tant qu'entierDim No_of_Elements'obtenir le tableauVecteur = Créer_Vector(Feuilles("Feuille1").Plage("A1:D5"))'boucler dans le tableau et remplir la feuillePour k = 0 à UBound (Vector) - 1Feuilles("Feuille1").Plage("G1").Décalage(k, 0).Valeur = Vecteur(k + 1)Suivant kFin du sous-marin |
Cette procédure renverra le résultat suivant.
Utilisation de WorksheetFunction.MMULT pour créer un tableau matriciel
Considérez la feuille de calcul suivante.
Nous pouvons utiliser la procédure ci-dessous pour calculer le montant des intérêts de la grille ci-dessus en fonction du taux d'intérêt et du montant que la personne souhaite emprunter.
123456789101112 | Sous-UtiliserMMULT()Dim rngIntRate As RangeDim rngAmtLoan As RangeRésultat faible () en tant que variante'remplir nos objets de plageDéfinir rngIntRate = Range("B4:B9")Définir rngAmtLoan = Range("C3:H3")'utiliser la formule MMULT pour remplir le tableau de résultatsRésultat = WorksheetFunction.MMult(rngIntRate, rngAmtLoan)'remplir la feuillePlage ("C4:H9") = RésultatFin du sous-marin |
Vous remarquerez dans la feuille ci-dessus que la procédure ci-dessus remplit les cellules avec des valeurs plutôt que des formules - voir C4 dans le graphique ci-dessus - elle contient la valeur 200, pas une formule. En utilisant le Feuille de travailFonction La méthode renvoie toujours une valeur statique à la feuille de calcul et non une formule. Cela signifie que si le taux d'intérêt ou le montant du prêt change, les valeurs correspondantes dans la matrice remplie NE FERA PAS monnaie.
Au lieu d'utiliser le WorksheetFunction.MMULT, vous pouvez utiliser VBA pour appliquer la fonction MMULT à une cellule en utilisant le TableauFormule méthode.
123 | Sous InsérerMMULT()Plage("C4:H9").FormulaArray = "=MMULT(B4:B9,C3:H3)"Fin du sous-marin |
Notez que maintenant, lorsque la feuille de calcul est remplie, une formule est utilisée dans les cellules.