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

VBA: Seitenzahlen finden

VBA: Seitenzahlen finden
22.08.2018 10:28:02
Jonas
Hallo ihr Lieben,
ich hoffe Ihr könnt mir helfen, ein Freund sagte man könne mein Problem evtl mit VBA lösen.
Ich muss für meine Arbeit aus einer mit viel Text gefüllten Zelle Seitenzahlen extrahieren.
Da es sich um mehrere 1000 Zeilen handelt, ist es unglaublich hoher (aktuell) händischer Aufwand.
Hier ein Beispiel:
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam S35-S63 z14-z17 et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
Der Text steht in Spalte AB
die Seitenzahlen (auch manchmal einstellig) sollen in Spalte B: S35-S63
und die Zeilenangaben in C: z14-z17
Nun habe ich das zusätzliche Problem, dass die Seitenzahlen selten einheitlich angegeben werden. Manchmal sind Tippfehler enthalten, wodurch sich Leerzeichen einschleichen: S 35 -S37, oder S35- S36 etc. Auch kann nur eine Seite angegeben sein: S36
Ich wäre euch sehr dankbar, wenn jemand eine Lösung parat hätte...
Nochmals Danke und Beste Grüße

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: RegEx
22.08.2018 10:41:58
Fennek
Hallo Jonas,
mit RegEx sollte dies gehen. Sind die gezeigten Varianten vollständig? Gibt es im Text weitere Kombinationen mit "S" und Zahlen?
Es ist sicher möglich den Beispieltext mit copy/paste als Basis für den Code zu nehmen, es sollte aber danach (keine) nicht zu viele Nachbesserungen angefragt werden.
mfg
AW: RegEx
22.08.2018 10:52:47
Jonas
Hallo Fennek,
leider darf ich den Originaltext nicht veröffentlichen aber es geht tatsächlich nur um die Seiten- / Zeilenangaben die irgendwo im Text stehen können.
Gerne Liste ich alle möglichen Kombinationen:
-S35-S63
-S 35-S36
-S 35- S36
-S 35 -S36
-S 35 - S36
-S 35- S 36
-S 35 -S 36
-S 35 - S 36
-S35- S36
-S35 -S36
-S35 - S36
-S35
-S 35
Da es keine Maske zum Eintragen der Seitenzahlen gibt, können alle möglichen Fehler entstanden sein...
Die Seitenzahl kommt im Text nur einmal vor.
Ich danke dir vielmals für deine Unterstützung!
Anzeige
AW: RegEx
22.08.2018 10:54:07
Jonas
natürlich sind die Seitenzahlen in jeder Zeile verschieden
AW: RegEx: Version 1
22.08.2018 11:07:17
Fennek
teste mal:

Sub F_en()
With CreateObject("vbscript.regexp")
.Global = True
.IgnoreCase = False
.MultiLine = False
For r = 2 To Cells(Rows.Count, "AB").End(xlUp).Row
Tx = Cells(r, "AB")
.Pattern = "S\s*\d{1,3}\s*-\s*S\s*\d{1,3}"
Set RR = .Execute(Tx)
For i = 0 To RR.Count - 1
Debug.Print i, RR(i)
S = S & RR(i) & ", "
Next i
Cells(r, "B") = S
Next r
End With
End Sub
Es sollte alle "von bis" Seitenzahlen gefunden werden.
Später kann man dies analog für die Zeilen machen.
Anzeige
AW: RegEx: Version 1
22.08.2018 11:24:35
Jonas
Vielen Dank.
Leider ist das Ergebnis nicht die jeweilige Seitenangabe sondern eine Liste von Seitenangaben (Liste enthält vorherige Seitenzahlen):
B2: S34-S36
B3: S34-S36, S36-S53
B4: S34-S36, S36-S53, S55-S65
B5: S34-S36, S36-S53, S55-S65, S66-S91
Hoffe es ist verständlich
AW: RegEx: Version 1
22.08.2018 11:41:26
Jonas
Ich habe eben festgestellt, dass der Code, wenn er nichts findet (keine Seitenzahl im Text vorhanden ist, oder die Zelle leer ist) den letzten gefunden Wert einträgt.
Ist es möglich, dass wenn er nichts findet (Keine Seitenzahl angegeben oder zelle leer) einen leeren Eintrag macht?
Ich bin die sehr dankbar!
Anzeige
AW: RegEx: Version 2
22.08.2018 11:40:14
Fennek
ohne Kenntnis des letzten Kommentars:

Sub F_en()
With CreateObject("vbscript.regexp")
.Global = True
.IgnoreCase = False
.MultiLine = False
For r = 2 To Cells(Rows.Count, "AB").End(xlUp).Row
Tx = Cells(r, "AB")
'Seitenzahlen
.Pattern = "S\s*\d{1,3}\s*-\s*S\s*\d{1,3}|S\s*\d{1,3}"
Set RR = .Execute(Tx)
For i = 0 To RR.Count - 1
'Debug.Print i, RR(i)
S = S & RR(i) & ", "
Next i
S = Replace(S, "-", " - ")
Cells(r, "B") = Application.Trim(S)
S = ""
'Zeilenzahlen
.Pattern = "z\s*\d{1,3}\s*-\s*z\s*\d{1,3}"
Set RR = .Execute(Tx)
For i = 0 To RR.Count - 1
'Debug.Print i, RR(i)
S2 = S2 & RR(i) & ", "
Next i
S2 = Replace(S2, "-", " - ")
Cells(r, "C") = Application.Trim(S2)
S2 = ""
Next r
End With
end sub

Anzeige
AW: RegEx: Version 2
22.08.2018 11:49:37
Jonas
Du bist der Beste!
Es funktioniert super!
Ist es zuviel verlangt dich zu fragen, wie ich (für den Fall dass noch weitere nicht abgedeckte Fälle kommen) weitere Fälle einbauen kann? Also könntest du kurz den Quelltext kommentieren, dass ich Ihn zu mindest halbwegs verstehe (dann lerne ich auch ein wenig dabei =) )
AW: RegEx: Version 2
22.08.2018 15:00:22
PeterK
Hallo
Schau dir mal die Seite regexr.com. Hier kannst Du Reguläre Ausdrücke testen (auch gute Erklärung aber auf Englisch).

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige