VBA Transpose-Array

In diesem Tutorial erfahren Sie, wie Sie ein Array mit VBA transponieren.

Array transponieren

Diese Funktion transponiert ein 2-dimensionales Array:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Funktion TransposeArray(MyArray als Variante) als VarianteDim x so lang, y so langDim maxX so lang, minX wie langDim maxY As Long, minY As LongDim tempArr als Variante"Obere und untere Grenzen erhalten"maxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)'Neues temporäres Array erstellenReDim tempArr(minX bis maxX, minY bis maxX)'Das Array transponierenFür x = minX bis maxXFür y = minY bis maxYtempArr(y, x) = MyArray(x, y)Als nächstesNächstes x'Ausgabe-ArrayTransposeArray = tempArrEndfunktionUnter TestTransposeArray()Dim testArr(1 bis 3, 1 bis 2) als VarianteDim AusgangArr As Variant'Array-Werte zuweisentestArr(1, 1) = "Steve"testArr(1, 2) = "Johnson"testArr(2, 1) = "Ryan"testArr(2, 2) = "Johnson"testArr(3, 1) = "Andrew"testArr(3, 2) = "Scott"'Transponierungsfunktion aufrufenoutputArr = TransposeArray(testArr)'TestausgabeMsgBox-AusgabeArr(2, 1)End Sub

Um diese Funktion zu testen, rufen Sie die Prozedur TestTransposeArray auf: Hier wird ein erstes Array testArr erzeugt und outputArr ist das letzte transponierte Array.

WorksheetFunction.Transpose

Stattdessen möchten Sie möglicherweise ein Array in Excel transponieren. Dazu können Sie die Excel-Arbeitsblatt-Transponierungsfunktion verwenden.

Dieses Verfahren transponiert ein 2D-Array in einen Excel-Bereich mit der Funktion zum Transponieren von Arbeitsblättern:

12345678910111213141516171819202122232425 Unter TestTransposeArray_Worksheetfx()Dim maxX so lang, minX wie langDim maxY As Long, minY As Long'Array erstellen und Werte zuweisenDim MyArray(1 bis 3, 1 bis 2) als VarianteMyArray(1, 1) = "Steve"MyArray(1, 2) = "Johnson"MyArray(2, 1) = "Ryan"MyArray(2, 2) = "Johnson"MyArray(3, 1) = "Andrew"MyArray(3, 2) = "Scott""Obere und untere Grenzen erhalten"maxX = UBound(MyArray, 1)minX = LBound(MyArray, 1)maxY = UBound(MyArray, 2)minY = LBound(MyArray, 2)'Array nach Excel transponierenRange("a1").Resize(maxY - minY + 1, maxX - minX + 1).Value = _Application.WorksheetFunction.Transpose(MyArray)End Sub

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave