VBA Transpose Array

Acest tutorial vă va învăța cum să transpuneți o matrice utilizând VBA.

Transpune matricea

Această funcție va transpune o matrice bidimensională:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Funcția TransposeArray (MyArray As Variant) Ca VariantDim x As Long, y As LongDim maxX As Long, minX As LongDim maxY As Long, minY As LongDim tempArr Ca variantă„Obțineți limitele superioare și inferioaremaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Creați o nouă matrice temporalăReDim tempArr (minX To maxX, minY To maxX)„Transpune matriceaPentru x = minX la maxXPentru y = minY To maxYtempArr (y, x) = MyArray (x, y)Următorul yUrmătorul x„Matrice de ieșireTransposeArray = tempArrFuncția de sfârșitSub TestTransposeArray ()Dim testArr (1 până la 3, 1 până la 2) Ca variantăDim outputArr Ca variantă'Atribuiți valori matricetestArr (1, 1) = "Steve"testArr (1, 2) = "Johnson"testArr (2, 1) = "Ryan"testArr (2, 2) = "Johnson"testArr (3, 1) = "Andrew"testArr (3, 2) = "Scott"„Funcția Transpunere apeloutputArr = TransposeArray (testArr)'Rezultatul de testareMsgBox outputArr (2, 1)Sfârșitul Sub

Pentru a testa această funcție, apelați procedura TestTransposeArray: aici este creată o matrice inițială testArr și outputArr este matricea finală transpusă.

WorksheetFunction.Transpose

În schimb, poate doriți să transpuneți o matrice în Excel. Pentru a face acest lucru, puteți utiliza funcția Excel Transpose Worksheet.

Această procedură va transpune o matrice 2D într-un interval Excel utilizând funcția Foaie de lucru Transpunere:

12345678910111213141516171819202122232425 Sub TestTransposeArray_Worksheetfx ()Dim maxX As Long, minX As LongDim maxY As Long, minY As Long'Creați matrice și atribuiți valoriDim MyArray (1 până la 3, 1 până la 2) ca variantăMyArray (1, 1) = "Steve"MyArray (1, 2) = "Johnson"MyArray (2, 1) = "Ryan"MyArray (2, 2) = "Johnson"MyArray (3, 1) = "Andrew"MyArray (3, 2) = "Scott"„Obțineți limitele superioare și inferioaremaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)„Transpune matricea în ExcelGama ("a1"). Redimensionare (maxY - minY + 1, maxX - minX + 1). Valoare = _Application.WorksheetFunction.Transpose (MyArray)Sfârșitul Sub
wave wave wave wave wave