VBA Transpose Array

Ta vadnica vas bo naučila, kako prenesti matriko z uporabo VBA.

Transponiraj niz

Ta funkcija bo prenesla 2-dimenzionalno matriko:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Funkcija TransposeArray (MyArray As Variant) Kot VariantDim x As Long, y As LongDim maxX As Long, minX As LongDim maxY As Long, minY As LongZatemni tempArr kot varianto"Pridobite zgornje in spodnje mejemaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Ustvari nov niz tempReDim tempArr (minX do maxX, minY do maxX)'Prenesite matrikoZa x = minX do maxXZa y = minY do maxYtempArr (y, x) = MyArray (x, y)Naslednji yNaslednji x'Izhodni nizTransposeArray = tempArrKončana funkcijaSub TestTransposeArray ()Zatemni testArr (1 do 3, 1 do 2) kot variantoDim outputArr kot varianta'Dodelite vrednosti matriketestArr (1, 1) = "Steve"testArr (1, 2) = "Johnson"testArr (2, 1) = "Ryan"testArr (2, 2) = "Johnson"testArr (3, 1) = "Andrew"testArr (3, 2) = "Scott"'Funkcija prenosa klicaoutputArr = TransposeArray (testArr)'Testni izhodMsgBox outputArr (2, 1)End Sub

Če želite preizkusiti to funkcijo, pokličite postopek TestTransposeArray: tukaj se ustvari začetna matrika testArr in outputArr je končna prenesena matrika.

Delovni list Funkcija. Prenesite

Namesto tega lahko matriko prenesete v Excel. To lahko storite s funkcijo Excelovega delovnega lista za prenos.

Ta postopek bo prestavil 2D matriko v obseg Excel s pomočjo funkcije Transpose Worksheet:

12345678910111213141516171819202122232425 Sub TestTransposeArray_Worksheetfx ()Dim maxX As Long, minX As LongDim maxY As Long, minY As Long'Ustvari matriko in dodeli vrednostiZatemni MyArray (1 do 3, 1 do 2) kot variantoMyArray (1, 1) = "Steve"MyArray (1, 2) = "Johnson"MyArray (2, 1) = "Ryan"MyArray (2, 2) = "Johnson"MyArray (3, 1) = "Andrew"MyArray (3, 2) = "Scott""Pridobite zgornje in spodnje mejemaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Prenesite matriko v ExcelRazpon ("a1"). Spreminjanje velikosti (maxY - minY + 1, maxX - minX + 1) .Vrednost = _Application.WorksheetFunction.Transpose (MyArray)End Sub

Vam bo pomagal razvoj spletnega mesta, ki si delijo stran s svojimi prijatelji

wave wave wave wave wave