VBA Transpose Array

Denne opplæringen vil lære deg hvordan du transponerer en matrise ved hjelp av VBA.

Transpose Array

Denne funksjonen vil transponere en todimensjonal matrise:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Funksjon TransposeArray (MyArray Som Variant) Som VariantDim x Så lenge, y Så lengeDim maxX As Long, minX As LongDim maxY As Long, minY As LongDim tempArr Som variant'Få øvre og nedre grensermaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Lag nytt Temp ArrayReDim tempArr (minX To maxX, minY To maxX)'Transponer matrisenFor x = minX Til maksXFor y = minY Til maksYtempArr (y, x) = MyArray (x, y)Neste yNeste x'Output ArrayTransposeArray = tempArrSluttfunksjonSub TestTransposeArray ()Dim testArr (1 til 3, 1 til 2) som variantDim outputArr som variant'Tilordne matriseverdiertestArr (1, 1) = "Steve"testArr (1, 2) = "Johnson"testArr (2, 1) = "Ryan"testArr (2, 2) = "Johnson"testArr (3, 1) = "Andrew"testArr (3, 2) = "Scott"'Call Transpose -funksjonoutputArr = TransposeArray (testArr)'TestutgangMsgBox outputArr (2, 1)Slutt Sub

For å teste denne funksjonen, ring prosedyren TestTransposeArray: her opprettes en innledende array testArr og outputArr er den endelige transponerte matrisen.

ArbeidsarkFunksjon.Transponere

I stedet vil du kanskje transponere en matrise til Excel. For å gjøre det, kan du bruke Excel Transpose regnearkfunksjonen.

Denne prosedyren vil transponere en 2D -matrise til et Excel -område ved hjelp av Transponer regnearkfunksjonen:

12345678910111213141516171819202122232425 Sub TestTransposeArray_Worksheetfx ()Dim maxX As Long, minX As LongDim maxY As Long, minY As Long'Lag matrise og tilordne verdierDim MyArray (1 til 3, 1 til 2) som variantMyArray (1, 1) = "Steve"MyArray (1, 2) = "Johnson"MyArray (2, 1) = "Ryan"MyArray (2, 2) = "Johnson"MyArray (3, 1) = "Andrew"MyArray (3, 2) = "Scott"'Få øvre og nedre grensermaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Overfør matrise til ExcelOmråde ("a1"). Endre størrelse (maxY - minY + 1, maxX - minX + 1). Verdi = _Application.WorksheetFunction.Transpose (MyArray)Slutt Sub

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave