Registriert seit: 21.10.2014
Version(en): 2013
29.02.2016, 13:37
(Dieser Beitrag wurde zuletzt bearbeitet: 29.02.2016, 13:37 von Schülerin.)
Hallo liebe Leute, aufbauend auf meinem letzten Thread: http://www.clever-excel-forum.de/Thread-...g-ausgebenmöchte ich die String in String-Suche hier gerne erweitern. Es geht um die Suche mit Wildcards und Platzhaltern. Beginnen wir mit dem Satz: strString = "Das Clever-Excel Forum, das Forum das sehr viele super Tipps gibt, das ist einfach riesig" Ich möchte alle Fundstellen mit dem Muster d*s haben. Hier also das Wort das. - Wie mache ich das?
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo, deine Variante z.B. so: Code: Sub String_in_String() Dim strString As String, strSuch1 As String, strSuch2 As String, strErgebnis As String, intA As Integer strString = "Ddss Clever-Excel Forum gibt viele super Tipps" strSuch1 = "d" strSuch2 = "s"
For intA = 1 To Len(strString) If LCase(Mid(strString, intA, 1)) = strSuch1 And LCase(Mid(strString, intA + 2, 1)) = strSuch2 Then strErgebnis = strErgebnis & intA & "," Next
Debug.Print Mid(strErgebnis, 1, Len(strErgebnis) - 1)
End Sub
Gruß Atilla
Registriert seit: 06.12.2015
Version(en): 2016
Hallo,
als Alternative, Text steht in A1:
Sub schuelerim() i=1 j=1
For x = 1 to len(cells(i,j) If mid(cells(i,j),x,3) like "d*s" then Tx = Tx & x & "; " Endif Next x Debug.print Tx 'oder cells(i,2) = tx End sub
Der Code findet nur "d", nicht "D".
Mfg
Registriert seit: 21.10.2014
Version(en): 2013
Hallöchen, mit folgendem Code bekomme ich wie gewünscht an den Stellen 18 und 65 die Ausgabe Forum: Code: Sub String_in_String_Wildcards() Dim strString As String, strSuch As String, strErgebnis As String, intA As Integer strString = "Das Clever-Excel Forum gibt viele super Tipps. Es ist ein super Forum! Ein foristisches Abenteuer." strSuch = "F*r**"
For intA = 1 To Len(strString) If (Mid(strString, intA, Len(strSuch))) Like strSuch Then strErgebnis = strErgebnis & intA & " " & Mid(strString, intA, Len(strSuch)) & " ," Next
Debug.Print "Ausgabe: " & Mid(strErgebnis, 1, Len(strErgebnis) - 1)
End Sub
Nun gehen wir mal einen Schritt weiter. Wir wissen, dass der Anfangsbuchstabe unseres Suchstrings strSuch ein großes F ist und der Endbuchstabe ein kleines m ist. Die Anzahl der dazwischenliegenden Buchstaben ist uns aber völlig unbekannt. Wie schafft man es dann, dass für die Stellen 18 und 65 wieder Forum ausgegeben wird?
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo, Code: Sub String_in_String_Wildcards() Dim strString As String, strSuch As String, strErgebnis As String, intA As Integer Dim iPos As Long strString = "Das Clever-Excel Forum gibt viele super Tipps. Es ist ein super Forum! Ein foristisches Abenteuer." strSuch = "F*m"
Do While IsNumeric(Evaluate("=SEARCH(" & """" & strSuch & """" & "," & """" & strString & """" & "," & iPos + 1 & ")")) iPos = Evaluate("=SEARCH(" & """" & strSuch & """" & "," & """" & strString & """" & "," & iPos + 1 & ")") + 1 For intA = iPos - 1 To Len(strString) If (Mid(strString, iPos - 1, intA - iPos + 1)) Like strSuch Then strErgebnis = strErgebnis & iPos - 1 & " " & Mid(strString, iPos - 1, intA - iPos + 1) & " ," Exit For End If Next Loop
Debug.Print "Ausgabe: " & Mid(strErgebnis, 1, Len(strErgebnis) - 1)
End Sub
Wenn Klein-Großschreibung beachtet werden soll, dann statt SEARCH FIND nehmen.
Gruß Atilla
Registriert seit: 05.12.2014
Version(en): 2010-2013
Hallo Atilla,
habe zu diesem spannendem Thema mit Wildcards gerade deinen Code ausprobiert. Fängt der Suchstring ähnlich wie bei "Forum" mit einem Großbuchstaben an und endet mit einem Kleinbuchstaben (z.B. Suche nach Wörtern wie "Tipps", "Abenteuer" etc.), liefert dieser ein Klasse-Ergebnis bei der Wildcard-Suche. Leider versagt der Code völlig, wenn ich zwei Kleinbuchstaben habe, z.B. Suche nach dem Wort "super", mit Wildcardsuche also "s*r". Darüber hinaus meldet der Compiler bei mir einen Fehler, wenn ich statt Search Find verwende.
Grüße Nora
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Nora, da war ich zu voreilig mit Find.Das steht in der OH: Zitat:Bei FINDEN und FINDENB wird zwischen Groß- und Kleinschreibung unterschieden, und es dürfen keine Platzhalterzeichen verwendet Also geht es so nur mit SEARCH
Gruß Atilla
Registriert seit: 29.09.2015
Version(en): 2030,5
01.03.2016, 13:50
(Dieser Beitrag wurde zuletzt bearbeitet: 01.03.2016, 13:51 von snb.)
@Schülerin
Mir fällt auf dass du nur Fragen stellst und selbst keine Beiträge leistest.
Was beabsichtigst du mit diesen Fragen ?
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Nora, auf die Schnelle kann ich Dir diese leicht erweiterte Lösung anbieten: Code: Sub String_in_String_Wildcards() Dim strString As String, strSuch As String, strErgebnis As String, intA As Integer Dim iPos As Long strString = "Das Clever-Excel Forum gibt viele super Tipps. Es ist ein super Forum! Ein foristisches Abenteuer." strSuch = "s*r"
Do While IsNumeric(Evaluate("=SEARCH(" & """" & strSuch & """" & "," & """" & strString & """" & "," & iPos + 1 & ")")) iPos = Evaluate("=SEARCH(" & """" & strSuch & """" & "," & """" & strString & """" & "," & iPos + 1 & ")") + 1 For intA = iPos - 1 To Len(strString) If (Mid(strString, iPos - 1, intA - iPos + 1)) Like [strSuch] And UBound(Split((Mid(strString, iPos - 1, intA - iPos + 1)))) = 0 Then strErgebnis = strErgebnis & iPos - 1 & " " & Mid(strString, iPos - 1, intA - iPos + 1) & " ," Exit For End If Next Loop
If Len(strErgebnis) Then Debug.Print "Ausgabe: " & Mid(strErgebnis, 1, Len(strErgebnis) - 1)
End Sub
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• Schülerin
Registriert seit: 05.12.2014
Version(en): 2010-2013
Hallo Atilla,
das funzt ja super mit dem s*r!
Nora
|