Tartalomjegyzék
Ez az oktatóanyag megtanít arra, hogyan kell egy tömböt átültetni a VBA segítségével.
Tömb átültetése
Ez a funkció kétdimenziós tömböt transzponál:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | Funkció TransposeArray (MyArray As Variant) Mint VariantDim x Amilyen hosszú, y Olyan hosszúDim maxX olyan hosszú, minX olyan hosszúDim maxY Long, minY As LongDim tempArr mint változat'Szerezd meg a felső és alsó határokatmaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Új temp tömb létrehozásaReDim tempArr (minX - maxX, minY - maxX)- A tömb átültetéseX = minX és maxX közöttY = minY és maxY közötttempArr (y, x) = MyArray (x, y)Következő yKövetkező x'Kimeneti tömbTransposeArray = tempArrVége funkcióSub TestTransposeArray ()Dim tesztArr (1 -től 3 -ig, 1 -től 2 -ig) VariantkéntDim outputArr As Variant'Rendeljen tömbértékekettestArr (1, 1) = "Steve"testArr (1, 2) = "Johnson"testArr (2, 1) = "Ryan"testArr (2, 2) = "Johnson"testArr (3, 1) = "András"testArr (3, 2) = "Scott"'Hívás transzponálás funkcióoutputArr = TransposeArray (testArr)'Teszt kimenetMsgBox kimenetArr (2, 1)End Sub |
Ennek a funkciónak a teszteléséhez hívja meg a TestTransposeArray eljárást: itt egy kezdeti tömb testArr jön létre, és outputArr a végső transzponált tömb.
MunkalapFunkció.Transzponálás
Ehelyett érdemes átültetni egy tömböt Excelbe. Ehhez használhatja az Excel Transpose Worksheet Function funkciót.
Ez az eljárás egy 2D tömböt transzponál egy Excel tartományba a Munkalap transzponálása funkció használatával:
12345678910111213141516171819202122232425 | Sub TestTransposeArray_Worksheetfx ()Dim maxX olyan hosszú, minX olyan hosszúDim maxY Long, minY As Long'Tömb létrehozása és értékek hozzárendeléseDim MyArray (1–3, 1–2) változatkéntMyArray (1, 1) = "Steve"MyArray (1, 2) = "Johnson"MyArray (2, 1) = "Ryan"MyArray (2, 2) = "Johnson"MyArray (3, 1) = "András"MyArray (3, 2) = "Scott"'Szerezd meg a felső és alsó határokatmaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Tömb átültetése ExcelbeTartomány ("a1"). Átméretezés (maxY - minY + 1, maxX - minX + 1). Érték = _Application.WorksheetFunction.Transpose (MyArray)End Sub |