Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

texte suchen und in Spalten kopieren

Forumthread: texte suchen und in Spalten kopieren

texte suchen und in Spalten kopieren
18.11.2004 11:40:06
zaske
Hallo liebe Leute,
Ich habe eine Tabelle bekommen die wie folgt strukturiert ist:
z.B.
Dokument 1 von 10
Signatur: USA 543/1
Titel: (2001)
Band: 5
Diese Informationen liegen ca. 50.000 mal untereinander in Spalte A vor(auf 3 Tabellen).
Die ersten 3 Angaben sind immer vorhanden, die 4te nicht immer.
Nun zu meiner Frage:
Ich möchte die 4 Infos in 4 Spalten per Makro sortieren.
Spalte A sollte dann laut Beispiel "1 von 19",
Spalte B "USA 543/1"
Spalte C "(2001)"
und Spalte D "5" enthalten. Die Spalten werden durch die Begriffe links definiert. Die Quell.- und Zielzeilen bekomme ich selbst hin. Ich weiß nur nicht, wie ich nach den Begriffen suchen soll und wie ich dann nur den rechten Teil der Zelle kopiere.
Puh, das war ein langer Text.
Bin für jede Anregung und Hilfe dankbar.
Gruß
Frank Zaske
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: texte suchen und in Spalten kopieren
18.11.2004 14:56:06
chris
Hi Frank,
ich hätte ne idee anzubieten. es gibt ne anweisung die heißt
"intr(*Start*,*String1*,*String2*,vbtextcompare)" Damit kannst du einen String in einem anderen String suchen, es wird dir dann die Position angegeben
- in deinem Beispiel würden "instr(1,Zellwert,"Signatur: ",vbtextcompare)" die position liefern an der die Signatur steht, dann müsstest du das gleiche für den nächsten wert machen, alse "Titel: ", dann nimmst du die Anweisung: "mid(Zellwert,*Start*,*Länge") und hast die Info
Zellwert ist der gesamte Text
Start = die Startposition der gesuchten Info (also Position von "Signatur: " + Länge "Signatur: " (10)
Länge ist die Differenz aus der (Position von "Titel: ") minus (Startposition von "Signatur: " + Länge "Signatur: " - also 10); Länge
die Länge von strings bekommst du über len(string)
= Hört sich komplizierter an als es ist - hoffe ich mal :o)
Gruss
Chris
Anzeige
AW: texte suchen und in Spalten kopieren
18.11.2004 14:59:28
PeterW
Hallo Frank,
wenn die Einträge lückenlos untereinander stehen könnte das so gehen:

Sub ListeErstellen()
Dim lgZiel As Long
Dim lgStart As Long
lgZiel = 1
lgStart = 1
Do
Cells(lgZiel, 2) = Right(Cells(lgStart, 1), Len(Cells(lgStart, 1)) - 9)
Cells(lgZiel, 3) = Right(Cells(lgStart + 1, 1), Len(Cells(lgStart + 1, 1)) - 9)
Cells(lgZiel, 4) = Right(Cells(lgStart + 2, 1), Len(Cells(lgStart + 2, 1)) - 7)
If Left(Cells(lgStart + 3, 1), 4) = "Band" Then
Cells(lgZiel, 5) = Right(Cells(lgStart + 3, 1), Len(Cells(lgStart + 3, 1)) - 6)
lgStart = lgStart + 4
Else
lgStart = lgStart + 3
End If
lgZiel = lgZiel + 1
Loop Until IsEmpty(Cells(lgStart, 1))
End Sub

Gruß
Peter
Anzeige
AW: texte suchen und in Spalten kopieren
18.11.2004 15:26:40
zaske
Dank an euch beide.
Frage an Peter:
Dein Makro funzt super.
Ich habe festgestellt, daß der Titel manchmal über mehrere Zeilen geht.
Titel: blabklalkjh
jhgjhgjhg
hghgkhkgf
Hast du eine Idee, wie ich das berücksichtigen könnte?
Dein Makro hält sich ja an eine feste Zeilenfolge.
Gruß
Frank Zaske
Anzeige
AW: texte suchen und in Spalten kopieren
18.11.2004 15:40:59
PeterW
Hallo Frank,
mit mehrere Zeilen meinst du mehrere Zellen? Das lässt sich über eine weitere Schleife und einen darin enthaltenen Zähler realisieren. Gibt es nur diese Besonderheit oder müssen noch andere Ausnahmen berücksichtigt werden?
Gruß
Peter
AW: texte suchen und in Spalten kopieren
18.11.2004 16:09:53
zaske
Hallo Peter,
Die Angaben stammen ursprünglich aus einer Textdatei.
Wenn der Titel zu lang war (selten,aber kommt vor), wurde in der nächsten zeile weitergeschrieben.
Können ca. 2-5 zellen sein.
Diese Zellen (ist ja alles in Spalte A) sollen zu einem String zusammengefasst werden.
Titel: Hallo
Du
Soll Heißen "Hallo Du"
Alle anderen Infos sind Einzeilig.
Vielen Dank für Deine Mühe.
Gruß
Frank
Anzeige
AW: texte suchen und in Spalten kopieren
18.11.2004 16:16:26
PeterW
Hallo Frank,
dann probier es mal so:

Sub ListeErstellen()
Dim lgZiel As Long
Dim lgStart As Long
Dim strTitel As String
Dim intTitel As Integer
lgZiel = 1
lgStart = 1
Do
Cells(lgZiel, 2) = Right(Cells(lgStart, 1), Len(Cells(lgStart, 1)) - 9)
Cells(lgZiel, 3) = Right(Cells(lgStart + 1, 1), Len(Cells(lgStart + 1, 1)) - 9)
strTitel = ""
intTitel = 1
strTitel = Right(Cells(lgStart + 2, 1), Len(Cells(lgStart + 2, 1)) - 7)
If Left(Cells(lgStart + 2 + intTitel, 1), 6) <> "Band: " And Left(Cells(lgStart + 2 + intTitel, 1), 9) <> "Dokument " Then
Do
intTitel = intTitel + 1
strTitel = strTitel & " " & Cells(lgStart + 1 + intTitel, 1)
Loop Until Left(Cells(lgStart + 2 + intTitel, 1), 6) = "Band: " _
Or Left(Cells(lgStart + 2 + intTitel, 1), 9) = "Dokument " _
Or IsEmpty(Cells(lgStart + 2 + intTitel, 1))
Cells(lgZiel, 4) = strTitel
Else
Cells(lgZiel, 4) = strTitel
End If
If Left(Cells(lgStart + 2 + intTitel, 1), 4) = "Band" Then
Cells(lgZiel, 5) = Right(Cells(lgStart + 2 + intTitel, 1), Len(Cells(lgStart + 2 + intTitel, 1)) - 6)
lgStart = lgStart + intTitel + 3
Else
lgStart = lgStart + intTitel + 2
End If
lgZiel = lgZiel + 1
Loop Until IsEmpty(Cells(lgStart, 1))
End Sub

Gruß
Peter
Anzeige
Super
18.11.2004 16:44:57
zaske
Hallo Peter,
Sensationell!
Vielen Dank für Deine Ausdauer.
Auch an alle anderen.
Die Hilfsbereitschaft in diesem Forum ist einfach unglaublich.
Gruß
Frank Zaske
Korrektur fürs Archiv
18.11.2004 17:33:28
PeterW
Der Else-Teil in der ersten If-Bedingung ist natürlich überflüssig, wie ein Kropf:

Sub ListeErstellen()
Dim lgZiel As Long
Dim lgStart As Long
Dim strTitel As String
Dim intTitel As Integer
lgZiel = 1
lgStart = 1
Do
Cells(lgZiel, 2) = Right(Cells(lgStart, 1), Len(Cells(lgStart, 1)) - 9)
Cells(lgZiel, 3) = Right(Cells(lgStart + 1, 1), Len(Cells(lgStart + 1, 1)) - 9)
strTitel = ""
intTitel = 1
strTitel = Right(Cells(lgStart + 2, 1), Len(Cells(lgStart + 2, 1)) - 7)
If Left(Cells(lgStart + 2 + intTitel, 1), 6) <> "Band: " And Left(Cells(lgStart + 2 + intTitel, 1), 9) <> "Dokument " Then
Do
intTitel = intTitel + 1
strTitel = strTitel & " " & Cells(lgStart + 1 + intTitel, 1)
Loop Until Left(Cells(lgStart + 2 + intTitel, 1), 6) = "Band: " _
Or Left(Cells(lgStart + 2 + intTitel, 1), 9) = "Dokument " _
Or IsEmpty(Cells(lgStart + 2 + intTitel, 1))
End If
Cells(lgZiel, 4) = strTitel
If Left(Cells(lgStart + 2 + intTitel, 1), 4) = "Band" Then
Cells(lgZiel, 5) = Right(Cells(lgStart + 2 + intTitel, 1), Len(Cells(lgStart + 2 + intTitel, 1)) - 6)
lgStart = lgStart + intTitel + 3
Else
lgStart = lgStart + intTitel + 2
End If
lgZiel = lgZiel + 1
Loop Until IsEmpty(Cells(lgStart, 1))
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige