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

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

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

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

239 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige