Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
660to664
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
660to664
660to664
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

LIKE-Operator

LIKE-Operator
02.09.2005 13:22:50
Rolf
Hallo,
wie muss ich im folgenden Makro
t2 definieren, damit dreimal "True"
(bei i=5, i=15, i=25) angezeigt wird?
hG
Rolf

Sub test_like()
Dim i, t1, t2, flag
For i = 1 To 25
t1 = "5;15;25"
t2 = i
flag = t1 Like t2
Msgbox flag
Next
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: LIKE-Operator
02.09.2005 13:51:58
bst
Hallo Rolf,
vermutlich geht das mit einem geschlossenen t1 gar nicht.
Das Beste, das ich hinbekommen habe steht unten. Findet halt leider auch die 1 in 15 und die 2 in 25.
Für solche und weitergehende Spielereien solltest Du 'echte' Regular Expressions nehmen.
cu, Bernd
--
Option Explicit

Sub test_like()
   Dim i, t1, t2
   t1 = "5;15;25"
   
   For i = 1 To 25
      t2 = "*" & i & "*"
      If t1 Like t2 Then MsgBox i
   Next
End Sub

Sub test_re()
   Dim i%, re As Object
   
   Set re = CreateObject("vbscript.regexp")
   re.Pattern = "^(5|15|25)$"
   
   For i = 1 To 25
   If re.test(CStr(i)) Then MsgBox i
   Next
   Set re = Nothing
End Sub

Anzeige
AW: LIKE-Operator
02.09.2005 14:11:02
Rolf
Hallo Bernd,
danke dir.
t1 kann auch ruhig Platzhalter beinhalten
mit zum Beispiel
t1 = "*5;15;25"
t2 = "*" & i
werden allerdings nur 5 und 25 gefunden.
Kannst du mir mal ein Beispiel geben,
wie ich das mit "Regular Expressions" löse,
weil die "Spielerei" im richtigen Leben
nämlich viel weiter geht.
Herzliche Grüße
Rolf
AW: LIKE-Operator
02.09.2005 14:30:42
bst
Hallo Rolf,
Du hast doch bereits ein Beispiel ;-)
re.pattern = "^(5|15|25)$"
^ = Anfang der Zeile/des Strings
| = logisches ODER
$ = Ende der Zeile/des Strings
(...) = Klammern von ..., ansonsten würde das ^ nur zur 5 gehören und das $ nur zur 25
Links zu RegExp's findest Du IMHO wie Sand am Meer.
Hier ein Teil von mir, mit welchem Du Suchen & Ersetzen kannst:
http://www.excel-center.de/foren/read.php?4,1922
Hier die vbscript.regexp Beschreibung bei M$:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsobjregexp.asp
Sowie hier die Regular Expression Syntax:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/js56jsgrpregexpsyntax.asp
Gute Einführungen findest Du ebenfalls viele, Du kannst auch PERL oder PHP-Dokus hierzu lesen, da die 'einfachen' Teile der RegEx-Syntax identisch sind.
Siehe z.B.:
http://www.regenechsen.de/regex_de/regex_1_de.html
http://activevb.de/rubriken/kolumne/kol_19/regexp.html
http://www.regular-expressions.info/tutorial.html
...
cu, Bernd
Anzeige
AW: LIKE-Operator
02.09.2005 14:42:25
Rolf
Hallo Bernd,
vielen Dank - das dürfte für's Erste reichen.
Wünsche dir noch ein schönes Wochenende
Rolf
vbscript.regexp
02.09.2005 14:27:05
Rolf
Hallo Bernd,
sorry, dass ich nur halb verdaut hatte -
hast du einen Link, der, möglichst in Deutsch,
die Eigenschaften + Methoden beschreibt;
der Objektkatalog gibt ja nicht viel her.
Herzliche Grüße
Rolf
AW: LIKE-Operator
02.09.2005 15:55:32
IngGi
Hallo Rolf,
wenn es dir nicht um den Like-Operator geht und du nur ein beliebiges Beispiel dafür gebastelt hast, sondern du eine Lösung für dein konkretes Beispiel suchst, warum nicht mit InStr():

Sub test_instr()
Dim i As Integer, t1 As String, t2 As String, flag As Boolean
For i = 1 To 25
t1 = ";5;15;25;"
t2 = ";" & CStr(i) & ";"
flag = InStr(1, t1, t2, vbTextCompare)
MsgBox flag
Next
End Sub
Gruß Ingolf
Anzeige
INSTR-Variante
02.09.2005 16:33:55
Rolf
Hallo Ingolf,
danke auch für DEINE Variante,
die ebenfalls zum gewünschten Ergebnis führt.
Da ich ziemlich große Arrays mit immer länger werdenden t2
vergleichen will, ist die Gretchenfrage, welche Methode
zum besten Durchsatz führt.
Da kann ich ja nun die verschiedenen Varianten testen.
Nochmals herzlichen Dank
Rolf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige