VBA Transpose Array

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

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave