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 |