Tableau de transposition VBA

Ce tutoriel va vous apprendre à transposer un tableau en utilisant VBA.

Transposer le tableau

Cette fonction transposera un tableau à 2 dimensions :

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Fonction TransposeArray(MyArray As Variant) As VariantDim x aussi long, y aussi longDim maxX aussi long, minX aussi longDim maxY aussi long, minY aussi longDim tempArr comme variante'Obtenir les limites supérieure et inférieuremaxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)'Créer un nouveau tableau temporaireReDim tempArr (minX à maxX, minY à maxX)'Transposer le tableauPour x = minX à maxXPour y = minY à maxYtempArr(y, x) = MonTableau(x, y)Y suivantSuivant x'Tableau de sortieTableauTranspose = TableauTempFonction de finSous TestTransposeArray()Dim testArr (1 à 3, 1 à 2) en tant que varianteDim outputArr As Variant'Attribuer des valeurs de tableautestArr(1, 1) = "Steve"TestArr(1, 2) = "Johnson"testArr(2, 1) = "Ryan"TestArr(2, 2) = "Johnson"testArr(3, 1) = "Andrew"testArr(3, 2) = "Scott"Fonction de transposition d'appeloutputArr = TransposeArray(testArr)'Test de sortieMsgBox sortieArr(2, 1)Fin du sous-marin

Pour tester cette fonction, appelez la procédure TestTransposeArray : ici un tableau initial testArr est créé et outputArr est le tableau transposé final.

WorksheetFunction.Transpose

Au lieu de cela, vous souhaiterez peut-être transposer un tableau vers Excel. Pour ce faire, vous pouvez utiliser la fonction Excel Transpose Worksheet.

Cette procédure transposera un tableau 2D dans une plage Excel à l'aide de la fonction Transposer la feuille de calcul :

12345678910111213141516171819202122232425 Sous TestTransposeArray_Worksheetfx()Dim maxX aussi long, minX aussi longDim maxY aussi long, minY aussi long'Créer un tableau et attribuer des valeursDim MyArray (1 à 3, 1 à 2) en tant que varianteMonTableau(1, 1) = "Steve"MonTableau(1, 2) = "Johnson"MonTableau(2, 1) = "Ryan"MonTableau(2, 2) = "Johnson"MonTableau(3, 1) = "Andrew"MonTableau(3, 2) = "Scott"'Obtenir les limites supérieure et inférieuremaxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)'Transposer le tableau vers ExcelPlage("a1").Redimensionner(maxY - minY + 1, maxX - minX + 1).Valeur = _Application.WorksheetFunction.Transpose(MyArray)Fin du sous-marin

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

wave wave wave wave wave