VBA transzponáló tömb

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

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave