Questo tutorial ti insegnerà come trasporre un array usando VBA.
Trasposizione matrice
Questa funzione traspone un array bidimensionale:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | Funzione TransposeArray(MyArray As Variant) As VariantDim x quanto più lungo, y quanto più lungoDim maxX quanto più lungo, minX quanto più lungoDim maxY quanto più lungo, minY quanto più lungoDim tempArr come variante"Ottieni limiti superiori e inferiori"maxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)"Crea nuovo array temporaneo"ReDim tempArr (da minX a maxX, da minY a maxX)"Trasponi l'array"Per x = minX a maxXPer y = minY a maxYtempArr(y, x) = MyArray(x, y)Avanti sìAvanti x"Matrice di output"TransposeArray = tempArrFine funzioneSub TestTransposeArray()Dim testArr(da 1 a 3, da 1 a 2) come varianteDim outputArr As Variant"Assegna valori array"testArr(1, 1) = "Steve"testArr(1, 2) = "Johnson"testArr(2, 1) = "Ryan"testArr(2, 2) = "Johnson"testArr(3, 1) = "Andrea"testArr(3, 2) = "Scott""Chiama la funzione di trasposizione"outputArr = TransposeArray(testArr)"Uscita di prova"MsgBox outputArr(2, 1)Fine sottotitolo |
Per testare questa funzione, chiama la procedura TestTransposeArray: qui viene creato un array iniziale testArr e outputArr è l'array trasposto finale.
Foglio di lavoroFunzione.Trasposizione
Invece, potresti voler trasporre un array in Excel. Per farlo, puoi usare la funzione Excel Transpose Worksheet.
Questa procedura traspone un array 2D in un intervallo di Excel utilizzando la funzione Transpose Worksheet:
12345678910111213141516171819202122232425 | Sub TestTransposeArray_Worksheetfx()Dim maxX quanto più lungo, minX quanto più lungoDim maxY quanto più lungo, minY quanto più lungo'Crea array e assegna valoriDim MyArray(da 1 a 3, da 1 a 2) come varianteMyArray(1, 1) = "Steve"MyArray(1, 2) = "Johnson"MyArray(2, 1) = "Ryan"MyArray(2, 2) = "Johnson"MyArray(3, 1) = "Andrea"MyArray(3, 2) = "Scott""Ottieni limiti superiori e inferiori"maxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)"Trasponi array in Excel"Intervallo ("a1"). Ridimensiona (maxY - minY + 1, maxX - minX + 1).Valore = _Application.WorksheetFunction.Transpose(MyArray)Fine sottotitolo |