Innehållsförteckning
Denna handledning lär dig hur du transponerar en array med VBA.
Transpose Array
Denna funktion kommer att överföra en tvådimensionell matris:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | Funktion TransposeArray (MyArray som variant) Som variantDim x As Long, y As LongDim maxX As Long, minX As LongDim maxY As Long, minY As LongDim tempArr som variant'Få övre och nedre gränsermaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Skapa ny Temp ArrayReDim tempArr (minX till maxX, minY till maxX)'Transpone the ArrayFör x = minX Till maxXFör y = minY Till maxYtempArr (y, x) = MyArray (x, y)Nästa yNästa x'Output ArrayTransposeArray = tempArrAvsluta funktionSub TestTransposeArray ()Dim testArr (1 till 3, 1 till 2) som variantDim outputArr som variant'Tilldela matrisvärdentestArr (1, 1) = "Steve"testArr (1, 2) = "Johnson"testArr (2, 1) = "Ryan"testArr (2, 2) = "Johnson"testArr (3, 1) = "Andrew"testArr (3, 2) = "Scott"'Call Transpose -funktionoutputArr = TransposeArray (testArr)'TestutmatningMsgBox outputArr (2, 1)Avsluta Sub |
För att testa denna funktion, ring proceduren TestTransposeArray: här skapas en första array testArr och outputArr är den slutliga transponerade arrayen.
ArbetsbladFunktion.Transponera
Istället kanske du vill transponera en matris till Excel. För att göra det kan du använda Excel Transpose Worksheet -funktionen.
Den här proceduren kommer att transponera en 2D -array till ett Excel -intervall med funktionen Transponera kalkylblad:
12345678910111213141516171819202122232425 | Sub TestTransposeArray_Worksheetfx ()Dim maxX As Long, minX As LongDim maxY As Long, minY As Long'Skapa matris och tilldela värdenDim MyArray (1 till 3, 1 till 2) som variantMyArray (1, 1) = "Steve"MyArray (1, 2) = "Johnson"MyArray (2, 1) = "Ryan"MyArray (2, 2) = "Johnson"MyArray (3, 1) = "Andrew"MyArray (3, 2) = "Scott"'Få övre och nedre gränsermaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Transponera matris till ExcelOmråde ("a1"). Ändra storlek (maxY - minY + 1, maxX - minX + 1). Värde = _Application.WorksheetFunction.Transpose (MyArray)Avsluta Sub |