Inhoudsopgave
Deze tutorial leert je hoe je een array transponeert met VBA.
Matrix transponeren
Deze functie transponeert een 2-dimensionale array:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | Functie TransposeArray(MyArray As Variant) As VariantDim x zo lang, y zo langDim maxX zo lang, minX zo langDim maxY zo lang, minY zo langDim tempArr As Variant'Verkrijg boven- en ondergrenzen'maxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)'Nieuwe tijdelijke array maken'ReDim tempArr (minX naar maxX, minY naar maxX)'Transponeer de array'Voor x = minX Tot maxXVoor y = minY Tot maxYtempArr(y, x) = MijnArray(x, y)Volgende jaarVolgende x'Uitvoerarray'TransposeArray = tempArrFunctie beëindigenSubtestTransposeArray()Dim testArr(1 To 3, 1 To 2) As VariantUitgang dimmenArr As Variant'Array-waarden toewijzen'testArr(1, 1) = "Steve"testArr(1, 2) = "Johnson"testArr(2, 1) = "Ryan"testArr(2, 2) = "Johnson"testArr(3, 1) = "Andries"testArr(3, 2) = "Scott"'Call Transpose Functie'outputArr = TransposeArray(testArr)'Testoutput'MsgBox outputArr(2, 1)Einde sub |
Om deze functie te testen, roept u de procedure TestTransposeArray aan: hier wordt een eerste array testArr gemaakt en is outputArr de laatste getransponeerde array.
WerkbladFunctie.Transponeren
In plaats daarvan wilt u misschien een array naar Excel transponeren. Om dit te doen, kunt u de Excel Transpose-werkbladfunctie gebruiken.
Deze procedure transponeert een 2D-array naar een Excel-bereik met behulp van de Transpose Worksheet-functie:
12345678910111213141516171819202122232425 | SubtestTransposeArray_Worksheetfx()Dim maxX zo lang, minX zo langDim maxY zo lang, minY zo lang'Maak een matrix aan en wijs waarden toe'Dim MyArray (1 tot 3, 1 tot 2) als variantMijnArray(1, 1) = "Steve"MijnArray(1, 2) = "Johnson"MijnArray(2, 1) = "Ryan"MijnArray(2, 2) = "Johnson"MyArray (3, 1) = "Andrew"MijnArray(3, 2) = "Scott"'Verkrijg boven- en ondergrenzen'maxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)'Array transponeren naar Excel'Bereik ("a1"). Formaat wijzigen (maxY - minY + 1, maxX - minX + 1). Waarde = _Application.WorksheetFunction.Transpose (MyArray)Einde sub |