Teil aus URL extrahieren & doppelte Daten markieren
Guten Morgen!
In einer Tabelle habe ich verschiedene URLs, und zwar folgender Art
http://www.abcdefg.com/hij/klm/nopqrstuvwxyz
Nun möchte ich in einer zweiten Spalte jeweils den Teil "KLM" extrahiert haben; hierbei ist anzumerken, dass die URL jeweils dahinter unterschiedlich lange noch weitergeht (auch unterschiedlich viele Slashs).
Zudem darf ich keine URL doppelt drin haben, bzw. der Teil "KLM" darf ich jeweils nur einmal haben. Gibt es eine Möglichkeit, dass doppelte Daten in Excel erkannt und z.B. farbig markiert werden können?
Wenn mir jemand eine Lösung für dieses Problem hätte, wäre ich äusserst dankbar, es würde mir sehr viel Arbeit ersparen!
Liebe Grüsse
Suki
Antwort schreiben
Antwort 1 von Saarbauer vom 17.08.2022, 13:00 Options
hallo,
deine Angaben ist etwas mager und ich nehme unterschiedliche Kennzeichnungen im Bereich "KLM" an
Ein Vorschlag, Hilfsspalte (bei mir E )Zeile 3
=TEIL(A3;28;3)
und dann "Bedingte Formatierung""Formel ist"
=ZÄHLENWENN(E3:E18;E3)>1
und dann mit Muster farbig hinterlegen
Sonst sind weitere Angaben erforderlich
Gruß
Helmut
Antwort 2 von coros vom 18.08.2022, 05:41 Options
Hallo Suki,
ich muss Helmut recht geben. Deine Angaben sind sehr wage, auch wenn Du das anders sehen wirst. Aber Du siehst Deine Daten und da ist für Dich einiges sicherlich selbstverständlich, wir sehen die Daten aber nicht.
Nachfolgend mal ein Makro, das in Spalte A beginnend ab Zeile 2 nach den Wert hinter dem 4. Slash vergleicht und bei Übereinstimmung die Zeile markiert und in Spalte B den gefundenen Wert ausgibt.
Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.Option Explicit
Sub Hyperlinks_vergleichen()
Dim strText() As String
Dim strTextVergleich() As String
Dim lngRow As Long
Dim lngRowVergleich As Long
'Schleife um Spalte A zu durchlaufen
For lngRow = 2 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'Wert aufteilen bei jeden Slash-Zeichen
strText = Split(ActiveSheet.Cells(lngRow, 1), "/")
'Schleife für den Vergleichswert in Spalte A
For lngRowVergleich = lngRow + 1 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'Vergleichswert aufteilen bei jeden Slash-Zeichen
strTextVergleich = Split(ActiveSheet.Cells(lngRowVergleich, 1), "/")
'Wenn aufgeteilter Wert gleich dem aufgeteilten Vergleichswert, dann...
If strText(4) = strTextVergleich(4) Then
'...Hintergrundfarbe der Zelle in rot und...
ActiveSheet.Cells(lngRow, 1).Interior.ColorIndex = 3
'...eine Spalte daneben den aufgeteilten Wert ausgeben und...
ActiveSheet.Cells(lngRow, 1 + 1) = strTextVergleich(4)
'...Hintergrundfarbe der Zelle in rot und...
ActiveSheet.Cells(lngRowVergleich, 1).Interior.ColorIndex = 3
'...eine Spalte daneben den aufgeteilten Vegleichswert ausgeben und...
ActiveSheet.Cells(lngRowVergleich, 1 + 1) = strTextVergleich(4)
End If
Next
Next
End Sub
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf
meiner HP in der
Rubrik Anleitungen und dort dann in der
Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 3 von Suki vom 18.08.2022, 08:14 Options
Hallo Helmut und Oliver!
Vielen herzlichen Dank euch beiden! Es tut mir leider, wenn die Angaben zu vage waren. Das Makro funktioniert, super, vielen Dank!
Eine Ergänzung noch: es kopiert mir in die zweite Spalte jetzt jeweils nur den Wert zwischen dem 4. und 5. Slash, sofern die Daten doppelt sind; könnte man das irgendwie noch ergänzen, dass dies bei allen Daten geschieht, nicht nur bei den doppelten?
Dankeschön auch für den Link zu deiner HP, die werde ich mir gleich mal noch genauer ansehen!
Liebe Grüsse
Suki
Antwort 4 von nighty vom 18.08.2022, 08:15 Options
hi all :-)
suche rechtsbündig nach slash,das wars doch schon oder ?
gruss nighty
Antwort 5 von coros vom 18.08.2022, 08:31 Options
Hallo Suki,
wenn ich Dich richtig verstanden habe, dann müsste das Makro folgendermaßen aussehen.
Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.Option Explicit
Sub Hyperlinks_vergleichen()
Dim strText() As String
Dim strTextVergleich() As String
Dim lngRow As Long
Dim lngRowVergleich As Long
'Schleife um Spalte A zu durchlaufen
For lngRow = 2 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'Wert aufteilen bei jeden Slash-Zeichen
strText = Split(ActiveSheet.Cells(lngRow, 1), "/")
'Schleife für den Vergleichswert in Spalte A
For lngRowVergleich = lngRow + 1 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'Vergleichswert aufteilen bei jeden Slash-Zeichen
strTextVergleich = Split(ActiveSheet.Cells(lngRowVergleich, 1), "/")
'Wenn aufgeteilter Wert gleich dem aufgeteilten Vergleichswert, dann...
If strText(4) = strTextVergleich(4) Then
'...Hintergrundfarbe der Zelle in rot und...
ActiveSheet.Cells(lngRow, 1).Interior.ColorIndex = 3
'...Hintergrundfarbe der Zelle in rot und...
ActiveSheet.Cells(lngRowVergleich, 1).Interior.ColorIndex = 3
End If
Next
'In Spalte B aufgeteilten Wert ausgeben und...
ActiveSheet.Cells(lngRow, 1 + 1) = strTextVergleich(4)
Next
End Sub
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 6 von Suki vom 18.08.2022, 08:40 Options
Guten Morgen, Oliver!
nun kopiert es einfach jeweils vom letzten Hyperlink den Wert zwischen dem 4. und 5. Slash in die andere Tabelle. Ich versuche mal, das hier an einem Beispiel zu zeigen, wie ich es meine:
http://www.abcdefg.com/hij/123/nopqrstuvwxyz => 123
http://www.abcdefg.com/hij/456/nopqrstuvwxyz => 456
http://www.abcdefg.com/hij/789/nopqrstuvwxyz => 789
Ich möchte also, dass es mir jeweils an der "KLM-Stelle" den jeweiligen Wert in die zweite Tabelle kopiert. Und wie gesagt, sollte dieser Wert einmal doppelt vorkommen, sollte er markiert werden (das funktioniert ja so auch!).
Liebe Grüsse & vielen Dank!
Suki
Antwort 7 von coros vom 18.08.2022, 17:35 OptionsLösung
Hallo Suki,
sorry, war ein Flüchtigkeitsfehler meinerseits. Ändere die Zeile
ActiveSheet.Cells(lngRow, 1 + 1) = strTextVergleich(4)
in
ActiveSheet.Cells(lngRow, 1 + 1) = strText(4)
MfG,
Oliver
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
Antwort 8 von Suki vom 18.08.2022, 18:04 Options
Hm, habe es geändert; es wird nur bei denjenigen extrahiert, die doppelt sind... gibt es eine Möglichkeit, dass dies bei allen Daten geschieht? Oder müsste man da ein weiteres Makro dazu noch haben? Vom Arbeitsablauf wäre dies gut möglich; ich muss zuerst die doppelten herausfiltern, am Ende dann den Teil "KLM" extrahieren.
Schon mal vielen Dank!
Antwort 9 von coros vom 18.08.2022, 18:11 Options
Hallo Suki,
sorry, aber bei mir funktioniert es. Du kannst Dir gerne meine Beispieldatei unter
http://www.excelbeispiele.de/Beispiele_Supportnet/Beispiel_Suki.xls herunterladen. Wie Deine Datei aussieht weiß ich nicht, da meine Glaskugel gerade mit meienr Frau unterwegs ist. :-)
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 10 von Suki vom 18.08.2022, 19:46 Options
Hey Oliver!
Super, vielen vielen herzlichen Dank! Habe jetzt meine Daten in deine Beispieldatei kopiert, da funktioniert es!
Grüsse an die Frau und die Glaskugel ;-)
Suki