Anzeige
Archiv - Navigation
1892to1896
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Transpose dynamische Tabelle

Transpose dynamische Tabelle
28.07.2022 09:39:06
Henry
Guten Morgen liebes Forum,
ich hoffe ihr nehmt es mir nicht übel, dass ich nochmal einen neuen Thread aufmache.
Aber ich komme leider nicht weiter.
Ich möchte eine dynamische Tabelle "Test_Matrix" transponieren.
Der folgende Code klappt allerdings nur ansatzweise.
Das Problem ist, dass aus der Tabelle "Test_Matrix" nur der Bereich D8:F11 übertragen wird.
In Wirklichkeit hat die Tabelle "Test_Matrix" jedoch einen Bereich von D8:F15.
Könnt ihr mir hier weiterhelfen?
Ich habe folgenden Code:

Sub Transpose()
Dim WS As Worksheet
Dim MyArray() As Variant
Set WS = Worksheets("Tabelle1")
MyArray = WS.Range("Test_Matrix")
Worksheets.Add
ActiveSheet.Range("A1", Range("A1").Offset(UBound(MyArray, 2) - 1, 3)).Value = Application.Transpose(MyArray)
End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Transpose dynamische Tabelle
28.07.2022 09:46:54
Rudi
dann stimmt der Bereichsname nicht mit deiner Tabelle überein.
Gruß
Rudi
AW: Transpose dynamische Tabelle
28.07.2022 09:53:10
Henry
Hallo Rudi,
du meinst den Namen "Test_Matrix"? Dieser stimmt definitiv.
Wenn ich Offset(UBound(MyArray, 2) - 1, 3)) in Offset(UBound(MyArray, 2) - 1, 7)) ändere dann klappt es.
Allerdings können sich die Zeilen und Spalten der Tabelle "Test_Matrix" ändern.
Ich würde das gerne variabel programmieren.

Sub Transpose()
Dim WS As Worksheet
Dim MyArray() As Variant
Set WS = Worksheets("Tabelle1")
MyArray = WS.Range("Test_Matrix")
Worksheets.Add
ActiveSheet.Range("A1", Range("A1").Offset(UBound(MyArray, 2) - 1, 7)).Value = Application.Transpose(MyArray)
End Sub

Anzeige
AW: Transpose dynamische Tabelle
28.07.2022 09:57:00
Oberschlumpf
Hi Henry
ohne, dass ich ne Lösung weiß, ist mir aber schon in deinem 1. Versuch aufgefallen, dass du nicht per Upload eine Bsp-Datei zur Verfügung gestellt hast.
Wieso nicht?
Mit Datei testen, anstelle vielleicht entstehende Interpretationsmissverständnisse durch ungenau Beschreibung(en) korrigieren zu müssen, ist doch viel einfacher, oder?
Ciao
Thorsten
AW: Transpose dynamische Tabelle
28.07.2022 10:21:18
Henry
Hallo Oberschlumpf,
grundsätzlich gebe ich dir Recht.
Allerdings sagte man mir hier damals, dass angehängte Dateien hier ohnehin nicht geöffnet werden und ich es somit direkt lassen kann.
AW: Transpose dynamische Tabelle
28.07.2022 10:25:56
Oberschlumpf
aha Henry,
und nur, weil 1 Antworter diese Behauptung aufstellt, gehst du davon aus, dass jeder Antworter so denkt?
Unabhängig davon (da kannst du nix zu, is auch nur meine erweiterte Meinung) - wie arrogant muss dieser 1 Antworter sein, dass er denkt, für alle Antworter "sprechen" zu können?
Ooooderrrr...zwar unwahrscheinlich, aber nich unmöglich: Haben sehr, sehr viele Antworter geschrieben, dass Bsp-Dateien eh nicht geöffnet werden?
Ciao
Thorsten
Anzeige
AW: Transpose dynamische Tabelle
28.07.2022 09:59:27
Rudi
dann musst du den Spaltenversatz eben auch dynamisieren.
Offset(UBound(MyArray, 2) - 1, UBound(MyArray)-1))
Anscheinend verstehst du den Code nicht.
Gruß
Rudi
AW: Transpose dynamische Tabelle
28.07.2022 09:59:44
Heli
Hi,
in Deinem Coding benutzt Du .Offset(...) brauchst aber einen .Resize(... damit die Einfügebereiche dem Array entsprechen:

ActiveSheet.Range("A1").Resize(UBound(MyArray, 2), Ubound(MyArray, 1)) = Application.Transpose(MyArray)
Ungetestet
VG, Heli
AW: Transpose dynamische Tabelle
28.07.2022 10:04:12
Henry
Hallo Heli,
vielen Dank!
Es klappt perfekt!
AW: bitte gerne owT
28.07.2022 10:11:44
Heli
so solls sein :-)
Alternativ...
28.07.2022 10:50:31
Case
Hallo, :-)
... kannst du es auch mal so probieren (zumindest in den neuen Excelversionen): ;-)

Option Explicit
Public Sub Main_1()
Tabelle2.Range("A1").Formula2 = "=TRANSPOSE(Test_Matrix)"
End Sub
Public Sub Main_2()
With Tabelle2.Range("A1")
.Formula2 = "=TRANSPOSE(Test_Matrix)"
.CurrentRegion.Value = .CurrentRegion.Value
End With
End Sub
Servus
Case
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige