Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1516to1520
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

Teilstring mit Platzhaltern suchen

Teilstring mit Platzhaltern suchen
10.10.2016 14:01:22
Joni
Hallo,
ich stehe mal wieder vor einer Herausforderung. Ich möchte aus einem String einen Teilstring, der Platzhalter enthält, finden und diesen Teilstring dann ausgeben. Ob der String überhaupt vorhanden ist lässt sich mir like prüfen, aber wie kann ich den gefundenen String ausgeben?
Beispiel
String AABBCCDD11223344
Suchstring B*DD*2 ergibt BBCCDD112 (1. B und 1. 2er)
Statt des Strings kann ich auch mit dem Beginnzeichen und der Länge leben. Es soll immer das erste Vorkommen zurückgegeben werden (wie bei instr). Wie könnte ich das anstellen? Danke für eure Hilfe.
Gruß Joni

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Teilstring mit Platzhaltern suchen
10.10.2016 14:47:41
Daniel
Hi
im Zweifelsfall durch eine entsprechende Programmierung:

Sub test()
Dim Txt As String
Dim Such As String
Dim Ergebnis As String
Dim i As Long, L As Long
Txt = "AABBCCDD11223344"
Such = "B*DD*2"
If Txt Like "*" & Such & "*" Then
For i = 1 To Len(Txt)
If Mid(Txt, i) Like Such & "*" Then Exit For
Next
For L = Len(Txt) - i To 1 Step -1
If Mid(Txt, i, L) Like Such Then Exit For
Next
Ergebnis = Mid(Txt, i, L)
End If
MsgBox Txt & vbLf & Such & vbLf & Ergebnis & vbLf & "Start: " & i & ", Länge: " & L
End Sub

Anzeige
Merci die Erste
10.10.2016 15:29:44
Joni
Hallo Daniel,
klappt wunderbar. Ein kleine Anpassung war noch erforderlich, da ich ansonsten beim Rückwärtszählen den ersten Treffer und nicht den letzten erhalten hätte.
If Mid(Txt, i, L) Like Such And Not Mid(Txt, i, L - 1) Like Such Then Exit For
Danke und Gruß Joni
AW: Teilstring mit Platzhaltern suchen
10.10.2016 14:49:08
Uwe
Hallo Joni,
z.B. so:

Sub aaa()
Dim lngA As Long, lngE As Long, lngZ As Long
Dim strE As String, strS As String, strT As String
strS = "B*DD*2"
strT = "AABBCCDD11223344"
lngA = Application.WorksheetFunction.Search(strS, strT)
lngE = Len(strT)
Do Until Mid(strT, lngA, lngE) Like strS
lngE = lngE - 1
Loop
strE = Mid(strT, lngA, lngE) ' ergibt BBCCDD112
Debug.Print strE
End Sub
Gruß Uwe
Anzeige
Merci die Zweite
10.10.2016 15:30:55
Joni
Hallo Uwe,
auch das klappt. Es ist die gleiche Anpassung wie bei Daniel erforderlich.
Do Until Mid(strT, lngA, lngE) Like strS And Not Mid(strT, lngA, lngE - 1) Like strS
Danke und Gruß
Joni
AW: Regenechse
10.10.2016 14:57:27
Fennek
Hallo,
passt folgender Code?

Sub test()
Tx = "AABBCCDD11223344"
'Suchstring B*DD*2 ergibt BBCCDD112 (1. B und 1. 2er)
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "B.*DD.*?2"
Debug.Print .Execute(Tx)(0)
End With
End Sub
mfg
Merci die Dritte
10.10.2016 15:34:32
Joni
Hallo Fennek,
der Code hat auf anhieb funktioniert :-). Was mir nicht so gefällt ist, dass ich das Suchpattern für regexp anpassen muss. Da es immer anders aussehen kann müsste ich hierfür eine Logik bauen. Auf Grund der Alternativen werde ich darauf verzichten ;-).
Danke und Gruß
Joni
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige