2.3k Aufrufe
Gefragt in Tabellenkalkulation von suki Mitglied (131 Punkte)
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

10 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
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
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von suki Mitglied (131 Punkte)
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :-)

suche rechtsbündig nach slash,das wars doch schon oder ?

gruss nighty
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von suki Mitglied (131 Punkte)
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
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sup]Jeder macht was er will, keiner macht was er soll, aber alle machen mit.[/sup]
0 Punkte
Beantwortet von suki Mitglied (131 Punkte)
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!
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von suki Mitglied (131 Punkte)
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
...