Matriz de transposición VBA

Este tutorial le enseñará cómo transponer una matriz usando VBA.

Transponer matriz

Esta función transpondrá una matriz bidimensional:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Función TransposeArray (MyArray como variante) como varianteDim x tan largo, y tan largoDim maxX tan largo, minX tan largoDim maxY As Long, minY As LongDim tempArr como variante'Obtener límites superiores e inferioresmaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Crear nueva matriz de temperaturaReDim tempArr (minX a maxX, minY a maxX)'Transponer la matrizPara x = minX a maxXPara y = minY a maxYtempArr (y, x) = MyArray (x, y)Próximo añoSiguiente x'Matriz de salidaTransposeArray = tempArrFunción finalSub TestTransposeArray ()Dim testArr (1 a 3, 1 a 2) como varianteAtenuar outputArr como variante'Asignar valores de matriztestArr (1, 1) = "Steve"testArr (1, 2) = "Johnson"testArr (2, 1) = "Ryan"testArr (2, 2) = "Johnson"testArr (3, 1) = "Andrew"testArr (3, 2) = "Scott"'Llamar a la función de transposiciónoutputArr = TransposeArray (testArr)'Salida de pruebaMsgBox outputArr (2, 1)End Sub

Para probar esta función, llame al procedimiento TestTransposeArray: aquí se crea una matriz inicial testArr y outputArr es la matriz transpuesta final.

WorksheetFunction.Transpose

En su lugar, es posible que desee transponer una matriz a Excel. Para hacerlo, puede utilizar la función de hoja de cálculo de transposición de Excel.

Este procedimiento transpondrá una matriz 2D a un rango de Excel utilizando la función Transponer hoja de trabajo:

12345678910111213141516171819202122232425 Sub TestTransposeArray_Worksheetfx ()Dim maxX tan largo, minX tan largoDim maxY As Long, minY As Long'Crear matriz y asignar valoresAtenuar MyArray (1 a 3, 1 a 2) como varianteMyArray (1, 1) = "Steve"MyArray (1, 2) = "Johnson"MyArray (2, 1) = "Ryan"MyArray (2, 2) = "Johnson"MyArray (3, 1) = "Andrew"MyArray (3, 2) = "Scott"'Obtener límites superiores e inferioresmaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Transponer matriz a ExcelRango ("a1"). Redimensionar (maxY - minY + 1, maxX - minX + 1) .Value = _Application.WorksheetFunction.Transpose (MyArray)End Sub

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave