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

Funktion für Makro

Forumthread: Funktion für Makro

Funktion für Makro
Alifa
Hallo,
kann mir jemand helfen, bei einer Funktion? Die zehnstelligen Strings haben die Form: A2B1C3D4E5. Also jeder String soll Jede Ziffer von 1-5 und jeden Buchstaben von A-E genau einmal beinhalten. Beispiel:A3C5D1B2E4 ist WAHR, A1C2B2A4C1 ist FALSCH. Habe das jetzt mit 2 separaten Funktionen gelöst.
5 Mal "Replace" und 5 Mal "Len(s)-Len(Replace(s,"A",""))=1" eingesetzt. Geht das nicht mit EINER Funktion und einfacher, in Konsequenz schneller? Danke im Voraus
Erhard
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Funktion für Makro
28.03.2012 09:18:55
Tino
Hallo,
ich habe es mal so gelöst.
Sub Test_()
Dim oReg As Object
Dim TestString$

Set oReg = CreateObject("Vbscript.Regexp")
   
With oReg
  .MultiLine = True
  .Global = True
  .IgnoreCase = True 'Groß- Kleinschreibung nicht beachten 
  .Pattern = "A.*A|B.*B|C.*C|D.*D|F.*F|1.*1|2.*2|3.*3|4.*4|5.*5"
End With

TestString = "A2B1C3D4E5"
Debug.Print Not oReg.test(TestString) 'Wahr = keine doppelten 

TestString = "A1C2B2A4C1"
Debug.Print Not oReg.test(TestString) 'Wahr = keine doppelten 

End Sub
Gruß Tino
Anzeige
AW: Funktion für Makro
28.03.2012 10:51:45
JoWE
Hallo Alifa, Hallo Tino
hab' ich das richtig verstanden, dass nur richtig oder falsch angezeigt werden soll?
Dann dies: Um mir die Schreibarbeit für (unendlich viele) Pattern-Ausdrücke zu sparen , hätte ich es über diese Funktion gelöst:
Function testStr(myStr As String)
testStr = False
Dim i1 As Long, i2 As Long
For i1 = 1 To Len(myStr)
For i2 = i1 + 1 To Len(myStr)
If Mid(myStr, i2, 1) = Mid(myStr, i1, 1) Then
Exit Function
End If
Next
Next
testStr = True
End Function

Gruß
Jochen
Anzeige
AW: Funktion für Makro
28.03.2012 11:46:37
Tino
Hallo,
Um mir die Schreibarbeit für (unendlich viele) Pattern-Ausdrücke zu sparen
Dafür wird man beim richtigen aufbau mit Geschwindigkeit belohnt. ;-)
Man könnte auch noch den String mit VBA zusammenbauen.
Gruß Tino
AW: Funktion für Makro
28.03.2012 11:51:40
JoWE
:-) komisch, warum wußte ich , dass genau diese Antwort kommt...
Nix für ungut,
Jochen
Anzeige
AW: Funktion für Makro
28.03.2012 14:11:55
Alifa
Danke!
Das passt genau. Klar, jedes 2. Zeichen soll ungleich sein, dann ist der Ausdruck war. Hätte selber darauf kommen müssen!
Viele Grüße
Alifa
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige