Tento tutoriál vás naučí, ako transponovať pole pomocou VBA.
Transponovať pole
Táto funkcia transponuje dvojrozmerné pole:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | Funkcia TransposeArray (MyArray As Variant) Ako VariantDim x ako dlhé, y tak dlhéDimXX ako dlhý, minX tak dlhýDim maxY Ako dlho, minY ako dlhoDim tempArr As Variant„Získajte horné a dolné hranicemaxX = UBound (MyArray, 1)minX = LViazané (MyArray, 1)maxY = UBound (MyArray, 2)minY = LViazané (MyArray, 2)„Vytvorte nové dočasné poleReDim tempArr (minX až maxX, minY až maxX)„Transponujte polePre x = minX až maxXPre y = minY až maxYtempArr (y, x) = MyArray (x, y)Ďalšie yDalej x„Výstupné poleTransposeArray = tempArrKoncová funkciaSub TestTransposeArray ()Dim testArr (1 až 3, 1 až 2) ako variantDim outputArr As Variant'Priraďte hodnoty poľatestArr (1, 1) = "Steve"testArr (1, 2) = "Johnson"testArr (2, 1) = "Ryan"testArr (2, 2) = "Johnson"testArr (3, 1) = "Andrew"testArr (3, 2) = "Scott"'Funkcia transpozície hovoruoutputArr = TransposeArray (testArr)„Testovací výstupMsgBox outputArr (2, 1)Koniec pod |
Na otestovanie tejto funkcie zavolajte postup TestTransposeArray: tu sa vytvorí počiatočné pole testArr a outputArr je konečné transponované pole.
Pracovný listFunkcia. Transponovať
Namiesto toho možno budete chcieť transponovať pole do Excelu. Na tento účel môžete použiť funkciu transpozičného listu programu Excel.
Tento postup transponuje 2D pole do rozsahu Excelu pomocou funkcie transpozície pracovného hárka:
12345678910111213141516171819202122232425 | Sub TestTransposeArray_Worksheetfx ()DimXX ako dlhý, minX tak dlhýDim maxY Ako dlho, minY ako dlho„Vytvorte pole a priraďte hodnotyDim MyArray (1 až 3, 1 až 2) ako variantMyArray (1, 1) = "Steve"MyArray (1, 2) = "Johnson"MyArray (2, 1) = "Ryan"MyArray (2, 2) = "Johnson"MyArray (3, 1) = "Andrew"MyArray (3, 2) = "Scott"„Získajte horné a dolné hranicemaxX = UBound (MyArray, 1)minX = LViazané (MyArray, 1)maxY = UBound (MyArray, 2)minY = LViazané (MyArray, 2)„Transponujte pole do ExceluRozsah („a1“). Zmeňte veľkosť (maxY - minY + 1, maxX - minX + 1). Hodnota = _Application.WorksheetFunction.Transpose (MyArray)Koniec pod |