Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
336to340
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
336to340
336to340
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Transponieren

Transponieren
12.11.2003 12:52:14
Uwe
Wie kann ich folgenden String transponieren:
"Punkt1 von 18 (vom 29.10.2003) Letzte Aktualisierung: 06.11.2003"
Die Zeilen stehen in einer Tabelle in verschiedenen Zeilen untereinander. Das Datum ist jedoch verschieden. Diese möchte ich alle mit diesem Makro transponieren.


Sub KopiereTranspo()
Dim Zeile As Integer
DIm Punkt.... ???????? As String
Dim Telefon As String
Dim Email As String
Application.ScreenUpdating = False
Do Until ActiveCell.Value = Empty
If ActiveCell.Value = "Punkt...?????" Then   'Gross- und Kleinschreibung beachten!
Punkt...????? = ActiveCell.Offset(0, 1).Value
Zeile = ActiveCell.Row
Range("O2").Select
Do Until ActiveCell.Value = Empty
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Value = Punkt....?????
Range("A" & Zeile).Select
End If
If ActiveCell.Value = "Telefon" Then   'Gross- und Kleinschreibung beachten!
Telefon = ActiveCell.Offset(0, 1).Value
Zeile = ActiveCell.Row
Range("O2").Select
Do Until ActiveCell.Value = Empty
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Value = Telefon
Range("A" & Zeile).Select
End If
If ActiveCell.Value = "Email" Then   'Gross- und Kleinschreibung beachten!
Email = ActiveCell.Offset(0, 1).Value
Zeile = ActiveCell.Row
Range("P2").Select
Do Until ActiveCell.Value = Empty
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Value = Email
Range("A" & Zeile).Select
End If
ActiveCell.Offset(1, 0).Select
Loop
Application.ScreenUpdating = True
End Sub



Kann mir jemand helfen?

Grüsse

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Transponieren
13.11.2003 11:42:23
Begges
bitte erklär nochmal, was du erreichen möchtest. Was verstehst du unter transponieren?
AW: Transponieren
14.11.2003 01:42:34
Uwe
Hallo Begges,

transponieren heisst: Zeilen in Spalten umwandeln.
Ich habe also in Spalte A immer wiederkehrende Begriffe, die dann in Spalten umgebrochen werden, sodass die Werte in der Spalte unterhalb aufgelistet werden.

A B C
Email Telefon Punkt << Überschriften
udo.@mail.de 069/5555 Punkt1von.... << Werte
werner.@t-online.de 06171/1111

vorher:

A B
Email udo.@mail.de
Telefon 069/5555
Punkt1von...
.....
Email werner.@t-online.de
Telefon 06171/1111
Punkt1von....

usw.

So und nu habe ich dieses: Punkt1 von 18 (vom 29.10.2003) Letzte Aktualisierung: 06.11.2003
Danach kommt Punkt2 von 18 (vom 28.10.2003) Letzte Aktualisierung: 05.11.2003
usw.

Problem ist Dim ???? As String (siehe Formel)

Was setze ich jetzt ein. Ich habe als feste Bezeichnung nur "Punkt". Der rest ändert sich ja dauernd. Gibt es da so eine Art Wildcat (*). Wahrscheinlich geht das aber in einer anderen Art und Weise oder?

Gruss
Uwe
Anzeige
AW: Transponieren
14.11.2003 02:13:45
PeterW
Hallo Uwe,

dein Problem scheint leicht lösbar zu sein aber ich verstehe auch nicht, was du genau möchtest. Kannst du mal eine Beispieltabelle auf den Server stellen aus der man ersehen kann, wie die Ursprungs- und Zieltabelle aussehen soll?

Gruß
Peter
AW: Transponieren
14.11.2003 10:30:53
Uwe
Hallo,

anbei habe ich das Beispiel.

Userbild


Gruss
AW: Transponieren
14.11.2003 14:02:14
PeterW
Hallo Uwe,

mit Alt+F11 den VBA-Editor öffnen, links siehst du das Projektfenster, Rechtsklick auf deine Datei, Einfügen, Modul.
In das sich öffnende Fenster folgenden Code kopieren:

Sub Transpo()
Dim vQuell
Dim lgZiel As Long
vQuell = InputBox("In welcher Zeile geht es los?")
If vQuell = "" Then Exit Sub
Range("C2:F" & Range("C65536").End(xlUp).Row).ClearContents
lgZiel = 2
Do
Cells(lgZiel, 3) = Cells(vQuell, 1)
Cells(lgZiel, 4) = Cells(vQuell + 2, 2)
Cells(lgZiel, 5) = Cells(vQuell + 3, 2)
Cells(lgZiel, 6) = Cells(vQuell + 4, 2)
vQuell = vQuell + 6
lgZiel = lgZiel + 1
Loop Until IsEmpty(Cells(vQuell, 1))
End Sub

Starten kannst du ihn entweder über Extras, Makro, Makros oder du erstellt dir eine Schaltfläche, der du den Code zuweist.

Gruß
Peter
Anzeige
AW: Transponieren
15.11.2003 12:38:51
Uwe
Hallo Peter,

ne, das klappt nicht so ganz. Mit dem Makro wird die Liste einfach nur in die nächste Spalte kopiert. Da habe ich das selbe wie die Ursprungsliste.
Es sollen ja alle Zeilen, die irgendwo in der Spalte stehen, gesucht und rechts untereinander aufgelistet werden. Also: Punkt1 von
Punkt2 von
Punkt3 von

Gruss
Uwe
AW: Transponieren
15.11.2003 12:59:25
Uwe
Hallo Peter,

ich muss mich entschuldigen. So wie ich es Dir als Beispiel gezeigt habe, klappt es
ganz prima. Das war mein Fehler. Das Problem ist, dass die Zeilen, in denen die Bezeichnung "Punkt1 von..." nicht immer alle 5 Zeilen kommen. Das ist verschieden.
Das geht mit Zeile 3 los, die nächste ist Zeile12, die nächste ist Zeile 21 usw.
Also willkürlich. Es müssten alle Zeilen gefunden werden, in denen diese Bezeichnung vorhanden ist und diese dann transponiert werden.
Sorry und tausend Entschuldigungen !

Gruss
Uwe
Anzeige
AW: Transponieren
16.11.2003 01:06:03
PeterW
Hallo Uwe,

kein Problem, das lässt sich anpassen - aber nicht mehr jetzt nach einer größeren Feier. :-)
Werde dir morgen einen passenden Ansatz liefern.

Gruß
Peter
AW: Transponieren
16.11.2003 13:21:37
Uwe
Hallo Peter,

dafür habe ich doch volles Verständnis.

Gruss
AW: Transponieren
16.11.2003 17:33:55
PeterW
Hallo Uwe,

hier der versprochene Ansatz. Jetzt ist es egal, in welchem Abstand die Zeilen Punkt... stehen, es werden die Werte aus der übernächsten und der zwei folgenden Zeilen nach Punkt... "transponiert".

Sub Transpo()
Dim lgQuell As Long
Dim lgZiel As Long
Range("C2:F" & Range("C65536").End(xlUp).Row).ClearContents
lgZiel = 2
lgQuell = 3
Do
If Left(Cells(lgQuell, 1), 5) = "Punkt" Then
Cells(lgZiel, 3) = Cells(lgQuell, 1)
Cells(lgZiel, 4) = Cells(lgQuell + 2, 2)
Cells(lgZiel, 5) = Cells(lgQuell + 3, 2)
Cells(lgZiel, 6) = Cells(lgQuell + 4, 2)
lgZiel = lgZiel + 1
End If
lgQuell = lgQuell + 1
Loop Until lgQuell > Range("A65536").End(xlUp).Row
End Sub

Gruß
Peter
Anzeige
AW: Transponieren
17.11.2003 00:58:34
Uwe
Hallo Peter,

ist ja sagenhaft !!! Einfach fänomenal. Einfach unglaublich. Das funktioniert ja
wirklich !?? Ich kann´s gar nicht fassen. Das isses.
Also, da muss ich mich aber ganz herzlich bei Dir bedanken. Kann ich etwas für Dich tun ? Ein Kästchen Bier oder so?

Nochmals vielen Dank

Und die besten Grüsse
Uwe

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige