VBA Transpoze Dizisi

Bu eğitim size VBA kullanarak bir diziyi nasıl transpoze edeceğinizi öğretecektir.

Diziyi Transpoze Etme

Bu fonksiyon 2 boyutlu bir diziyi transpoze edecektir:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Varyant Olarak TransposeArray (Varyant Olarak MyArray) İşleviDim x Kadar Uzun, y Kadar UzunDim maxX Kadar Uzun, minX Kadar UzunDim maxY Kadar Uzun, minY Kadar UzunVaryant Olarak Dim tempArr'Üst ve Alt Sınırları AlınmaxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)'Yeni Temp Dizisi OluşturReDim tempArr(minX - maxX, minY - maxX)'Diziyi Aktarx = minX için maxX'ey = minY için maxY'yetempArr(y, x) = MyArray(x, y)sonraki yılSonraki x'Çıktı DizisiTransposeArray = tempArrBitiş İşleviAlt TestTransposeArray()Dim testArr(1 - 3, 1 - 2) As VariantDim outputArr As Varyant'Dizi Değerleri AtatestArr(1, 1) = "Steve"testArr(1, 2) = "Johnson"testArr(2, 1) = "Ryan"testArr(2, 2) = "Johnson"testArr(3, 1) = "Andrew"testArr(3, 2) = "Scott"'Çağrı Aktarma İşlevioutputArr = TransposeArray(testArr)'Test ÇıktısıMsgBox çıktıArr(2, 1)Alt Bitiş

Bu işlevi test etmek için, TestTransposeArray prosedürünü çağırın: burada bir başlangıç ​​dizisi testArr oluşturulur ve outputArr, aktarılan son dizidir.

WorksheetFunction.Transpoze

Bunun yerine, bir diziyi Excel'e dönüştürmek isteyebilirsiniz. Bunu yapmak için Excel Transpose Çalışma Sayfası İşlevini kullanabilirsiniz.

Bu prosedür, Çalışma Sayfasını Aktarma İşlevini kullanarak bir 2B diziyi bir Excel aralığına aktaracaktır:

12345678910111213141516171819202122232425 Alt TestTransposeArray_Worksheetfx()Dim maxX Kadar Uzun, minX Kadar UzunDim maxY Kadar Uzun, minY Kadar Uzun'Dizi Oluştur ve Değer AtaDim MyArray(1 - 3, 1 - 2) Varyant OlarakMyArray(1, 1) = "Steve"MyArray(1, 2) = "Johnson"MyArray(2, 1) = "Ryan"MyArray(2, 2) = "Johnson"MyArray(3, 1) = "Andrew"MyArray(3, 2) = "Scott"'Üst ve Alt Sınırları AlınmaxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)'Diziyi Excel'e AktarRange("a1").Resize(maxY - minY + 1, maxX - minX + 1).Value = _Application.WorksheetFunction.Transpose(MyArray)Alt Bitiş

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave