Tablica transpozycji VBA

Ten samouczek nauczy Cię, jak transponować tablicę za pomocą VBA.

Transpozycja tablicy

Ta funkcja przetransponuje dwuwymiarową tablicę:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Funkcja TransposeArray(MyArray As Variant) As VariantDim x tak długo, y tak długoDim maxX tak długo, minX tak długoDim maxY tak długo, minY tak długoDim tempArr jako wariant'Zdobądź górne i dolne granicemaxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)'Utwórz nową tablicę temp.Redim tempArr (minX do maxX, minY do maxX)„Transponuj szyk”Dla x = minX Do maxXDla y = minY Do maxYtempArr(y, x) = MojaTablica(x, y)Następny takNastępny x„Tablica wyjściowa”TransposeArray = tempArrKoniec funkcjiPodtestTransposeArray()Dim testArr (1 do 3, 1 do 2) jako wariantDim outputArr As Variant„Przypisz wartości tablicy”testArr(1, 1) = "Steve"testArr(1, 2) = "Johnson"testArr(2, 1) = "Ryan"testArr(2, 2) = "Johnson"testArr(3, 1) = "Andrzej"testArr(3, 2) = "Scott"„Wywołaj funkcję transpozycji”outputArr = TransposeArray(testArr)„Wyjście testowe”MsgBox outputArr(2, 1)Napis końcowy

Aby przetestować tę funkcję, wywołaj procedurę TestTransposeArray: tutaj tworzona jest początkowa tablica testArr, a outputArr jest ostatnią transponowaną tablicą.

Arkusz roboczyFunkcja.Transpozycja

Zamiast tego możesz transponować tablicę do programu Excel. Aby to zrobić, możesz użyć funkcji arkusza transpozycji programu Excel.

Ta procedura transponuje tablicę 2D do zakresu programu Excel za pomocą funkcji arkusza transpozycji:

12345678910111213141516171819202122232425 PodtestTransposeArray_Worksheetfx()Dim maxX tak długo, minX tak długoDim maxY tak długo, minY tak długo„Utwórz tablicę i przypisz wartości”Dim MyArray (1 do 3, 1 do 2) jako wariantMoja tablica (1, 1) = "Steve"Moja tablica (1, 2) = "Johnson"Moja tablica (2, 1) = "Ryan"Moja tablica (2, 2) = "Johnson"MyArray(3, 1) = "Andrzej"MojaTablica(3, 2) = "Scott"'Zdobądź górne i dolne granicemaxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)„Transponuj macierz do programu Excel”Zakres("a1").Resize(maxY - minY + 1, maxX - minX + 1).Value = _Application.WorksheetFunction.Transpose(MyArray)Napis końcowy

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave