Matrice VBA - Créer et plus

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.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave