Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1868to1872
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

Doppeltes Transpose

Doppeltes Transpose
12.02.2022 17:38:38
Franz
Hallo,
in einer frueheren Frage bzgl. Verketten von Zeilen habe ich hier im Forum super Hilfe gefunden - danke nochmal an alle Antworter. Die fuer mich passendste Loesung kam von Rudi: https://www.herber.de/forum/archiv/1868to1872/1868651_Jeweils_3_Zeilen_zu_einer_zusammenfassen.html#1868657 (extra Dank!)
Da ich es oefter und auch mit veraenderten Eingabedaten verwenden moechte will ich den Code ganz verstehen - und das habe ich leider noch nicht geschafft :(.
Rudis Loesung enthaelt u.a.
vntTmp = Cells(lRow, 1).Resize(, Application.CountA(Rows(lRow)))
vntTmp = Application.Transpose(vntTmp)
vntTmp = Application.Transpose(vntTmp)
Weshalb ist nach den beiden Transpose vntTmp nicht wie zuvor? Wenn ich die beiden Transpose weglasse sehe ich, dass es ohne nicht klappt, ich durchschaue aber dennoch nicht, was sie bewirken. Kann mir da jemand weiterhelfen?
VG Franz

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppeltes Transpose
12.02.2022 20:02:21
Luschi
Hallo Franz,
dafür bietet doch der Vba-Editor einige Hilfe an:
- Vba-Editor öffnen (Alt+F11)
- das Überwachungsfenster aktivieren
  Menüpunkt 'Ansicht'- Überwachungsfenster anklicken
- dieses Ü-Fenster andocken am unteren Bildschirmrand
- Variable 'vntTmp' markieren und bei gedrückter linker
  Maustaste in ds Direktfenster ziehen
- Prozedur 'aaa' starten mit F8-Taste (Einzelschritt-Modus)
  und mit F8-Taste weiterschalten
- nach jedem Befehl 'vntTmp = ...' im Ü-Fenstersich den Inhalt
  dieser Variable 'vtnTmp' ansehen
- und schon siehst Du die vorgenommenen Änderung in dieser Variable
Gruß von Luschi
aus klein-Paris
PS: mehr Spaß bei diesem Programm-Debugging bringt ein 2. Monitor am PC/Laptop
Anzeige
ich persönlich ....
12.02.2022 20:09:19
Rudi
...nehme immer das Lokalfenster
Gruß
Rudi
Ich hoffe ja noch immer, dass irgendwann mal wieder ein Treffen stattfindet, auf dem du auch dabei bist.
AW: Doppeltes Transpose
13.02.2022 12:48:59
Franz
Danke fuer die Anleitung, werde ich ausprobieren soblad ich im Buero 2 Monitore vor mir habe, ebenso die Variante mit dem Lokalfenster.
(Wie schafft ihrs echte Umlaute in Forenbeitraege zu schreiben? Bei mir (MacOS, FF) gibt's sowas wie öäü.
VG Franz
AW: Doppeltes Transpose
12.02.2022 20:04:56
Rudi
Hallo,
vntTmp = Cells(lRow, 1).Resize(, Application.CountA(Rows(lRow)))
erzeugt ein Array (1 to 1, 1 to n)
vntTmp = Application.Transpose(vntTmp)
macht daraus ein Array ( 1 to n, 1 to 1)
vntTmp = Application.Transpose(vntTmp)
macht daraus wiederum ein eindimensionales Array (1 to n)
Das ist eine Eigenart der Transpose-Funktion. Sicherer und auch nicht langsamer (und besser zu verstehen) ist eigentlich eine Transponierung per Schleife.
Somit ergäbe sich für den geposteten Code:

Sub aaa()
Dim lRow As Long, vntTmp, strTmp, lOut As Long, i As Integer
Application.ScreenUpdating = False
For lRow = 1 To Cells(Rows.Count, 1).End(xlUp).Row Step 3
strTmp = vbNullString
vntTmp = Cells(lRow, 1).Resize(, Application.CountA(Rows(lRow)))
For i = 1 To UBound(vntTmp, 2)
strTmp = strTmp & "|" & vntTmp(1, i)
Next i
strTmp = Mid(strTmp, 2) & Cells(lRow + 1, 1) & "|" & Cells(lRow + 2, 1)
vntTmp = Split(strTmp, "|")
lOut = lOut + 1
Sheets("Zieltabelle").Cells(lOut, 1).Resize(, UBound(vntTmp) + 1) = vntTmp
Next
End Sub
Gruß
Rudi
Anzeige
AW: Doppeltes Transpose
13.02.2022 12:43:16
Franz
Yep! Ich hab's :).
Wenn man's mal weiß ist der Zweifach-Transpose ne elegante Lösung!
Danke und nen schönen sonnigen Sonntagnachmittag, Franz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige