Pattern Mitte

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Pattern Mitte
von: Larissa Apfel
Geschrieben am: 26.10.2015 10:20:24

Ich habe ein ähnliches Problem, die Tage schon gepostet und es wurde idealerweise gelöst. nun hat sich die Angelegenheit noch ein wenig "verschärft".
Ich habe ein pattern, dass folgendermaßen aussieht:
eine beliebige Zeichenfolge gefolgt von einem -, beliebige Zeichenfolge - beliebige Zeichenfolge

--> %-%-%
% = beliebige Zeichenfolge.
Der String (Pattern) kann am Anfang, Mitte oder Ende stehen. Wie löse ich das mit den VBA-Funktionen Left(), Right() oder Mid(). Gibt es noch eine andere nützliche Funktion?
Vielen lieben Dank im Voraus für eure tatkräftige Unterstützung.

Bild

Betrifft: AW: Pattern Mitte
von: Rudi Maintaire
Geschrieben am: 26.10.2015 10:26:58
Hallo,
hilft dir Split() weiter?
vArr = Split(String,"-") teilt den Strin "aa-bb-cc" an den - in ein Array auf.
Gruß
Rudi

Bild

Betrifft: AW: Pattern Mitte
von: Larissa Apfel
Geschrieben am: 26.10.2015 10:34:33
Leider nicht, da ich ja das gesuchte Pattern %-%-% als ganzes brauche.
Beispiel:
1 4,00 12-AB-CDEF 15,25 € 61,00 €
12-AB-CDEF soll nach dem Schneiden übrig bleiben. Mal kann das Pattern am Anfang, Mitte oder Ende stehen.

Bild

Betrifft: AW: Pattern Mitte
von: Rudi Maintaire
Geschrieben am: 26.10.2015 10:42:21
Hallo,
dann splitte am Leerzeichen und durchsuche das Array nach den -.

a= "1 4,00 12-AB-CDEF 15,25 € 61,00 €"
b=split(a," ")
for i=0 to ubound(b)
  if b(i) like "*-*-*" then
    c=b(i)
    Exit for
  End If
next i
Gruß
Rudi

Bild

Betrifft: AW: Pattern Mitte
von: Larissa Apfel
Geschrieben am: 26.10.2015 10:43:49
Ich habe das eben getestet und die Ausgabe ist der komplette String.

Bild

Betrifft: AW: Pattern Mitte
von: Rudi Maintaire
Geschrieben am: 26.10.2015 10:52:38
Hallo,
und du willst die Bestandteile von 12-AB-CDEF ???
Wieder Split.

Sub aaa()
  a = "1 4,00 12-AB-CDEF 15,25 € 61,00 €"
  b = Split(a, " ")
  For i = 0 To UBound(b)
    If b(i) Like "*-*-*" Then
      c = Split(b(i), "-")
      Exit For
    End If
  Next i
  For i = 0 To UBound(c)
    MsgBox c(i)
  Next
  'MsgBox Join(c, vbLf)
End Sub
Gruß
Rudi

Bild

Betrifft: AW: Pattern Mitte
von: Larissa Apfel
Geschrieben am: 26.10.2015 10:54:38
Ne die Ausgabe bei dem String oben ist der komplette String und ich will nur 12-AB-CDEF.

Bild

Betrifft: AW: Pattern Mitte
von: Rudi Maintaire
Geschrieben am: 26.10.2015 10:57:07


Sub aaa()
  a = "1 4,00 12-AB-CDEF 15,25 € 61,00 €"
  b = Split(a, " ")
  For i = 0 To UBound(b)
    If b(i) Like "*-*-*" Then
      c = b(i)
      Exit For
    End If
  Next i
  MsgBox c
End Sub


Bild

Betrifft: AW: Pattern Mitte
von: Larissa Apfel
Geschrieben am: 26.10.2015 11:02:30
Danke, sorry mein Fehler! Genau das habe ich gesucht. Vielen lieben Dank!

Bild

Betrifft: AW: Pattern Mitte
von: Daniel
Geschrieben am: 26.10.2015 10:56:03
Hi
hast du das richtige Trennzeichen bei b=split(a," ") eingegben (der zweite Parameter)?
schau mal welches Zeichen das ist und welches ASCII-Code es hat.
das kannst du so rausfinden:
Zähle aus, an welcher Position das Trennzeichen das erste mal auftritt und gib dann in eine freie Zelle die Formel ein
=Code(Teil(A1;xxx;1))
A1 ist die Zelle in der der Text steht, für xxx setzt du die von dir ausgezählte Postionsnummer des Trennzeiches ein.
Gruß Daniel

Bild

Betrifft: berechtigter Einwand
von: Rudi Maintaire
Geschrieben am: 26.10.2015 11:02:28
wenn das Leereichen kein chr(32) sondern ein chr(160) ist klappt es so nicht.
Sicherheitshalber austauschen.

  a = "1 4,00 12-AB-CDEF 15,25 € 61,00 €"
  a = Replace(a, Chr(160), Chr(32))


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Autofilter Makro mehrere Werte ausblenden"