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

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

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
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
Anzeige
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
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

333 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige