Transpoziční pole VBA

Tento tutoriál vás naučí, jak transponovat pole pomocí VBA.

Transponovat pole

Tato funkce transponuje 2-dimenzionální pole:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Funkce TransposeArray (MyArray As Variant) Jako variantaDim x As Long, y As LongDim maxX jako dlouhý, minX tak dlouhýDim maxY tak dlouho, minY tak dlouhoDim tempArr As Variant„Získejte horní a dolní hranicimaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Vytvořit nové teplotní poleReDim tempArr (minX To maxX, minY To maxX)„Transponujte polePro x = minX až maxXPro y = minY až maxYtempArr (y, x) = MyArray (x, y)Další yDalší x"Výstupní pole."TransposeArray = tempArrKoncová funkceDílčí testTransposeArray ()Dim testArr (1 až 3, 1 až 2) jako variantaDim outputArr As Variant`` Přiřaďte hodnoty poletestArr (1, 1) = "Steve"testArr (1, 2) = "Johnson"testArr (2, 1) = "Ryan"testArr (2, 2) = "Johnson"testArr (3, 1) = "Andrew"testArr (3, 2) = "Scott"'Funkce Transpose CalloutputArr = TransposeArray (testArr)'Testovací výstupMsgBox outputArr (2, 1)End Sub

Chcete -li tuto funkci otestovat, zavolejte proceduru TestTransposeArray: zde se vytvoří počáteční pole testArr a outputArr je konečné transponované pole.

Pracovní list Funkce. Transponovat

Místo toho možná budete chtít transponovat pole do Excelu. Chcete -li to provést, můžete použít funkci Transpoziční list aplikace Excel.

Tento postup transponuje 2D pole do rozsahu Excelu pomocí funkce Transpose Worksheet:

12345678910111213141516171819202122232425 Dílčí testTransposeArray_Worksheetfx ()Dim maxX jako dlouhý, minX tak dlouhýDim maxY tak dlouho, minY tak dlouho`` Vytvořte pole a přiřaďte hodnotyDim MyArray (1 až 3, 1 až 2) jako variantaMyArray (1, 1) = "Steve"MyArray (1, 2) = "Johnson"MyArray (2, 1) = "Ryan"MyArray (2, 2) = "Johnson"MyArray (3, 1) = "Andrew"MyArray (3, 2) = "Scott"„Získejte horní a dolní hranicimaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)„Transponujte pole do ExceluRozsah ("a1"). Změnit velikost (maxY - minY + 1, maxX - minX + 1). Hodnota = _Application.WorksheetFunction.Transpose (MyArray)End Sub
wave wave wave wave wave