VBA Transpose Array

Este tutorial ensinará como transpor um array usando o VBA.

Transpor Array

Esta função irá transpor uma matriz bidimensional:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Função TransposeArray (MyArray As Variant) As VariantDim x As Long, y As LongDim maxX As Long, minX As LongDim maxY enquanto, minY enquantoDim tempArr como variante'Obter limites superiores e inferioresmaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Criar Nova Matriz TempReDim tempArr (minX para maxX, minY para maxX)'Transpor a matrizPara x = minX Para maxXDe y = minY a maxYtempArr (y, x) = MyArray (x, y)A seguirPróximo x'Output ArrayTransposeArray = tempArrFunção FinalSub TestTransposeArray ()Dim testArr (1 a 3, 1 a 2) como varianteDim outputArr como variante'Atribuir valores de matriztestArr (1, 1) = "Steve"testArr (1, 2) = "Johnson"testArr (2, 1) = "Ryan"testArr (2, 2) = "Johnson"testArr (3, 1) = "André"testArr (3, 2) = "Scott"'Função de transposição de chamadaoutputArr = TransposeArray (testArr)'Teste de SaídaMsgBox outputArr (2, 1)End Sub

Para testar esta função, chame o procedimento TestTransposeArray: aqui um array inicial testArr é criado e outputArr é o array transposto final.

WorksheetFunction.Transpose

Em vez disso, você pode querer transpor uma matriz para o Excel. Para fazer isso, você pode usar a função de planilha de transposição do Excel.

Este procedimento irá transpor uma matriz 2D para um intervalo do Excel usando a função Transpor planilha:

12345678910111213141516171819202122232425 Sub TestTransposeArray_Worksheetfx ()Dim maxX As Long, minX As LongDim maxY enquanto, minY enquanto'Criar matriz e atribuir valoresDim 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) = "André"MyArray (3, 2) = "Scott"'Obter limites superiores e inferioresmaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Transpor Array para ExcelIntervalo ("a1"). Redimensionar (maxY - minY + 1, maxX - minX + 1) .Value = _Application.WorksheetFunction.Transpose (MyArray)End Sub

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave