Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

String extrahieren zwischen 2. und 3. Backslash

Forumthread: String extrahieren zwischen 2. und 3. Backslash

String extrahieren zwischen 2. und 3. Backslash
30.06.2014 11:20:21
AndiD

Hallo,
ich habe das letzte Logindatum und den Pfad zur ntuser.dat extrahiert.
Jetzt möchte ich den Inhalt der Spalte mit dem Pfad reduzieren auf den Inhalt
zwischen dem zweiten und dritten Backslash, weil nur das relevant ist und mir
den User genau sagt.
Das Skript oder Makro soll natürlich durch das ganze Spreadsheet laufen, d.h.
ich will es nicht für jede Zeile erneut anstossen müssen.
Hier ein paar Beispiel-Zeilen:
15.04.2011 C:\Dokumente und Einstellungen\b0053940\NTUSER.DAT
05.09.2011 C:\Dokumente und Einstellungen\ct3994844\NTUSER.DAT
04.03.2012 C:\Dokumente und Einstellungen\c054531\NTUSER.DAT
14.03.2012 C:\Dokumente und Einstellungen\ct49605\NTUSER.DAT
Eigentlich kann das nicht so schwer sein, aber ich habe lange nichts mit Excel-VBA gemacht.
Würde es aber sofort verstehen und umsetzen können, wenn mir hier einer auf die Sprünge hilft.
Danke und Gruß
Andi

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: String extrahieren zwischen 2. und 3. Backslash
30.06.2014 11:35:53
Hajo_Zi
Hallo Andi,

Tabelle3
Z. B. mit Split(Split(...
30.06.2014 11:36:07
Case
Hallo, :-)
für die Spalte A ab Zeile 1 im gerade aktiven Tabellenblatt - Ausgabe in Spalte B:
Option Explicit
Sub Main()
Dim lngLastRow As Long
For lngLastRow = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(lngLastRow, 1).Value Like "*\*" Then
Cells(lngLastRow, 2).Value = Split(Split(Cells(lngLastRow, 1).Value, _
"\")(2), "\")(0)
End If
Next lngLastRow
End Sub
Servus
Case

Anzeige
AW: String extrahieren zwischen 2. und 3. Backslash
30.06.2014 11:36:16
Daniel
Hi
wende die Funktion DATEN - DATENTOOLS - TEXT IN SPALTEN auf die Spalten an
mache hierbei folgende Einstellungen:
Schritt 1: getrennt
Schritt 2: wähle den \ als Trennzeichen
Schritt 3: hier siehst du die Spalten die erzeugt werden. Klicke alle nach einander an und wähle bei "Datenformat der Spalten" dann "Spalte nicht importieren (überspringen)" aus, ausser für die Spalte, die du behalten willst.
Für die Umsetzung als Makro lässt du einfach den Recorder mitlaufen.
Gruß Daniel

Anzeige
AW: String extrahieren zwischen 2. und 3. Backslash
30.06.2014 14:17:18
AndiD
Vielen Dank für die Antworten,
inzwischen hatte ich mir selbst folgendermaßen beholfen, und falls jemand anderes einmal so etwas benötigt, hier gleich mit Erläuterungen, was ich mir dabei gedacht habe:
Im Grunde errechnest du einen Substring (= Teil), weshalb Teil (im deutschen Excel) die Basisfunktion von der ganzen Formel ist:
Finde das zweite Backslash;
zähle eins zu der gefundenen Position hinzu, weil du das Backslash selbst nicht benötigst und fange dort an zu extrahieren.
Finde die Position des dritten Backslashes und ziehe die Position des zweiten Backslashes ab, dann hast du prinzipiell die Anzahl der zu extrahierenden Zeichen;
Ziehe noch eins mehr ab, weil du auch das letzte Backslash nicht brauchst;
Jetzt hast du die Länge des zu extrahierenden Substrings gefunden; diese Zahl ergänzt du dann zu dem zu extrahierenden Teilstring.
Wichtig zu verstehen ist, dass die (Teil-)Formeln sich von rechts nach links ergänzen, also rückwärts, d.h. z.B. in dem Teilstring, wo du das dritte BAckslash suchst, wird das von dem zuerst geschriebenen FINDENN geliefert und das erste Backslash wird von dem dritten hingeschriebenen FINDEN zurückgegeben.
Semikolons sind die Begrenzer. Deutsches Excel hat Links, Teil und Finden statt Left, Sub und find.
Ich schreib das hier mit rein, weil dies die Stellen waren, wo es bei mir hakte (nach Jahren der Vernachlässigung von VBA-Script.
So geht der:
=TEIL(D2;FINDEN("\";D2;FINDEN("\";D2)+1)+1;(FINDEN("\";D2;FINDEN("\";D2;FINDEN("\";D2)+1)+1) -FINDEN("\";D2;FINDEN("\";D2)+1)-1))  
Allerdings fehlt mir noch ein "ganzes Makro", denn momentan kopiere ich die Formel in die oberste Zeile in eine Spalte und ziehe dann runter, so dass er intelligent die Spaltennamen ändert. Gerne hätte ich das in eine Sub in VBA gepackt, die automatisch über das Blatt läuft.
Also
Sub MeineStringExtraction
... /Befehl lauf über das ganze Blatt
// etc.
end sub
Hat einer ne Ahnung?
Gruß Andi

Anzeige
AW: String extrahieren zwischen 2. und 3. Backslash
30.06.2014 14:47:43
Daniel
die TEXT-IN-SPALTEN-Methode kannst du dir einfach und ohne viel aufwand mit dem Recorder aufzeichnen, es entstehen hierbei auch keine neuen Spalten (es sei denn, du möchtest es)
Gruß Daniel

AW: String extrahieren zwischen 2. und 3. Backslash
30.06.2014 22:44:41
Peter S.
ich habe obiges Beispiel mal in eine Tabelle1 ab D5:D8 kopiert und den String zerlegt.
Vielleicht ein etwas umstaendliches Makro, aber wenn es laeuft sollte es egal sein.
Das Ergebnis wird in Spalte B geschrieben. Den Range Bereich nach eigenem Ermessen
zu aendern sollte nicht allzu schwer sein. (Ich verwende die alte InStr() Variante)
Sub Makro1()
Sheets("Tabelle1").Select
Range("D5:D8").Select
For Each i In Selection
cText = Right(i, Len(i) - InStr(i, " "))        'C:\Dokumente Text  (ohne Datum)
tStrg1 = Right(i, Len(i) - InStr(i, "\"))                  '1. Teilstring Rechts
tStrg2 = Right(tStrg1, Len(tStrg1) - InStr(tStrg1, "\"))   '2. Teilstring Rechts
CutStrg = Left(tStrg2, InStr(tStrg2, "\") - 1)             'Cut 3. Backslash
i.Offset(0, -2) = CutStrg
Next i
End Sub
Gruss Peter S.

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
Anzeige

Infobox / Tutorial

String extrahieren zwischen 2. und 3. Backslash in Excel


Schritt-für-Schritt-Anleitung

Um den String zwischen dem zweiten und dritten Backslash in Excel zu extrahieren, kannst du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, um dies zu erreichen:

  1. Öffne Excel und gehe zu "Entwicklertools". Wenn die Entwicklertools nicht angezeigt werden, aktiviere sie in den Excel-Optionen.
  2. Klicke auf "Visual Basic", um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu:
    • Rechtsklick auf "VBAProject (DeineDatei.xlsx)".
    • Wähle "Einfügen" > "Modul".
  4. Füge den folgenden Code ein:
Option Explicit
Sub Main()
    Dim lngLastRow As Long
    For lngLastRow = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(lngLastRow, 1).Value Like "*\*" Then
            Cells(lngLastRow, 2).Value = Split(Split(Cells(lngLastRow, 1).Value, "\")(2), "\")(0)
        End If
    Next lngLastRow
End Sub
  1. Schließe den VBA-Editor und kehre zurück zu Excel.
  2. Starte das Makro, um die gewünschten Strings in Spalte B zu extrahieren.

Häufige Fehler und Lösungen

  • Fehler: "Typ nicht übereinstimmend"
    Lösung: Stelle sicher, dass die Zellen in Spalte A Text enthalten und keine leeren Zellen vorhanden sind.

  • Fehler: "Index außerhalb des Bereichs"
    Lösung: Überprüfe, ob der String in Spalte A tatsächlich zwei Backslashes enthält. Andernfalls gibt es keinen Wert zum Extrahieren.


Alternative Methoden

Eine alternative Methode zur Extraktion von Teilstrings ist die Verwendung der Funktion "TEXT IN SPALTEN":

  1. Markiere die Spalte mit den Pfaden.
  2. Gehe zu "Daten" > "Text in Spalten".
  3. Wähle "Getrennt" und klicke auf "Weiter".
  4. Setze einen Haken bei "Andere" und gib \ als Trennzeichen ein.
  5. Klicke auf "Fertig stellen".
    Diese Methode erzeugt mehrere Spalten, aus denen du die relevante Information auswählen kannst.

Praktische Beispiele

Hier sind einige Beispielzeilen und die erwarteten Ausgaben:

Original String Extrahierter Teilstring
C:\Dokumente und Einstellungen\b0053940\NTUSER.DAT b0053940
C:\Dokumente und Einstellungen\ct3994844\NTUSER.DAT ct3994844
C:\Dokumente und Einstellungen\c054531\NTUSER.DAT c054531
C:\Dokumente und Einstellungen\ct49605\NTUSER.DAT ct49605

In diesen Beispielen wurde der relevante Benutzername zwischen dem zweiten und dritten Backslash extrahiert.


Tipps für Profis

  • Verwende Option Explicit: Dies hilft dir, Fehler zu vermeiden, indem du sicherstellst, dass alle Variablen deklariert sind.
  • Optimiere dein Makro: Du kannst das Makro so anpassen, dass es auch Fehlerbehandlungen enthält, um bei ungültigen Eingaben robust zu sein.
  • Verwende die InStr-Funktion: Diese ist nützlich, wenn du den Backslash oder andere Zeichen in Strings suchen möchtest.

FAQ: Häufige Fragen

1. Wie kann ich die Funktion für andere Zeichen anpassen?
Du kannst das Trennzeichen in der Funktion Split ändern, um andere Zeichen zu verwenden, z.B. Schrägstriche / oder andere Trennzeichen.

2. Funktioniert das auch in der deutschen Excel-Version?
Ja, du kannst die entsprechenden deutschen Funktionen wie TEIL, FINDEN usw. nutzen, um die gleichen Ergebnisse zu erzielen.

3. Was mache ich, wenn mein String weniger als zwei Backslashes hat?
In diesem Fall wird das Makro den betreffenden String einfach überspringen, da die Bedingungen nicht erfüllt sind.

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