Registriert seit: 29.09.2015
Version(en): 2030,5
27.02.2016, 15:22
(Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2016, 15:22 von snb.)
Code: Sub M_snb() sn = Split("Abra Kadabra", "a", , 1) For j = 1 To UBound(sn) - 1 c00 = c00 & sn(j) & "a" c01 = c01 & "," & Len(c00) + 1 Next MsgBox Mid(c01, 2) End Sub
Oder Code: Sub M_snb() c00 = "Abra Kadabra"
For j = 1 To Len(c00) c01 = c01 & "," & InStr(Application.Substitute(c00, "a", "~", j), "~") If Right(c01, 2) = ",0" Then Exit For Next
MsgBox Mid(c01, 2, Len(c01) - 3) End Sub
oder Code: Sub M_snb() Names.Add "snb", "Abra Kadabra"
MsgBox Join(Filter([transpose((mid(substitute(snb,"a","~"),row(1:100),1)="~")*row(1:100))], 0, 0), ",") End Sub
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• Schülerin
Registriert seit: 21.10.2014
Version(en): 2013
Hallo Snb, sehr interessante Lösungsvorschläge von dir. Leider für meine VBA Kenntnisse zu hoch. Deshalb gleich mal meine erste Frage. Ich möchte den Code allgemeiner halten und nach beliebigen Zeichen in dem gegeben String suchen. Also habe ich deinen Code etwas modifiziert: Code: Sub NewLSG2() Dim strSuch As Variant strSuch = "a"
Names.Add "snb", "Abra Kadabra und andere Zaubereien"
Debug.Print Join(Filter([transpose((mid(substitute(snb, strSuch,"~"),row(1:100),1)="~")*row(1:100))], 0, 0), ",")
End Sub
Obwohl ich den Suchstring strSuch als Variant deklariert habe meldet mir der Compiler Typenunverträglichkeit. Es wäre sehr nett von dir, wenn du deinen Code so umgestalten würdest, dass man über strSuch = irgendwas! ein beliebiges Zeichen aus dem angegeben String "Abra Kadabra und andere Zaubereien" suchen könnte.
Registriert seit: 29.09.2015
Version(en): 2030,5
Code: Sub M_snb() Names.Add "snb", "Abra Kadnabra etcetera" Names.Add "s_b", "a" MsgBox Replace(Join(Filter([transpose((mid(substitute(snb,s_b,"~"),row(1:100),1)="~")*-row(1:100))], "-")), "-", "") End Sub
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• Schülerin
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, Du wolltest doch zuletzt eine rekursive Lösung?
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Schülerin
Registriert seit: 29.09.2015
Version(en): 2030,5
27.02.2016, 19:05
(Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2016, 19:05 von snb.)
@Schauan,
War wäre das Ergebnis Unterschied in 'Abra Kadabra' rekursiv und nicht-rekursiv ?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
wäre schlimm, wenn im Ergebnis einer wäre. Der Unterschied ist die Aufgabe. War ja nach den ersten Lösungen als zusätzliche Frage gestellt ...
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 21.10.2014
Version(en): 2013
Hallo Leute, allen nochmals vielen Dank. !!!! Leider ist mir bezüglich meines Codes und der Aufgabenstellung hier ein dicker Fehler unterlaufen. Den möchte ich hier korregieren!!! Code: Sub String_in_String() 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!" strSuch = "Forum"
For intA = 1 To Len(strString) If Mid(strString, intA, Len(strSuch)) = strSuch Then strErgebnis = strErgebnis & intA & "," Next
Debug.Print Mid(strErgebnis, 1, Len(strErgebnis) - 1)
End Sub
Wichtig: Code: !!! Mid(strString, intA, Len(strSuch)) !!!!
statt der 1 muss es Len(strSuch) heißen, da es sich ja hier um eine String in String-Suche handeln soll und nicht nur einzelne Zeichen gesucht werden sollen. Diese Formulierung ist allgemeiner und wesentlich besser. Den Cracks hier ist das sicherlich egal, aber das Forum soll ja für alle Leute so gut wie möglich lesbar sein. Sorry!
Registriert seit: 29.09.2015
Version(en): 2030,5
Bleibt 'ungeändert': Code: Sub M_snb() Names.Add "snb", "Abra Kadnabra etcetera" Names.Add "s_b", "et" MsgBox Replace(Join(Filter([transpose((mid(substitute(snb,s_b,"~"&mid(s_b,2,len(s_b))),row(1:100),1)="~")*-row(1:100))], "-")), "-", "") End Sub
Registriert seit: 21.10.2014
Version(en): 2013
Hallöchen, um die erste Position und die Ziffer in einem String mit Zahlen zu finden habe ich folgenden Code entwickelt: Code: Sub Erste_Position_und_erste_Ziffer_einer_Zahl_in_einem_String() Dim strString As String, intA As Integer strString = "Meine Vorwahl ist 089 und ich lebe in München." For intA = 1 To Len(strString) If InStr("1234567890", Mid(strString, intA, 1)) > 0 Then Exit For Next intA Debug.Print "Position: " & intA & " Zahl: " & Mid(strString, intA, 1) End Sub
Vielleicht geht so etwas auch noch besser und kürzer. Lösungsvorschläge sind wie immer willkommen. Vor allem suche ich aber nach einer Lösungsmöglichkeit um alle Positionen von Zahlengruppen samt der Zahlengruppe im String selbst zu ermitteln. Der folgende Beispielsatz samt Lösungsstring, soll verdeutlichen was ich damit meine. Beispielsatz: strString = "Wir haben 825 Tonnen, 4689 Kilogramm und 22 Pfund an Lebensmittel gekauft." Lösungstring: Position 10 Zahl 825, Position 22 Zahl 4689, Position 41 Zahl 22 Wie immer haben einige von euch dafür sicherlich die interessantesten Lösungsvorschläge.
Registriert seit: 21.10.2014
Version(en): 2013
Hallo, habe mal folgend Lösung entwickelt. Ich hoffe ihr habt weitere Lösungen. Code: Sub Positionen_aller_Zahleninseln_in_einem_String() Dim strString As String, strSuch As String, strErgebnis As String, intA As Integer strString = "Wir haben 825 Tonnen, 4689 Kilogramm und 22 Pfund an Lebensmittel gekauft."
For intA = 1 To Len(strString) If IsNumeric(Mid(strString, intA, 1)) Then strErgebnis = strErgebnis & ", Position: " & intA & " Zahl: " & Mid(strString, intA, 1)
While (IsNumeric(Mid(strString, intA, 1))) intA = intA + 1 strErgebnis = strErgebnis & Mid(strString, intA, 1) Wend End If
Next
Debug.Print Mid(strErgebnis, 2, Len(strErgebnis))
End Sub
|