Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1768to1772
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
Inhaltsverzeichnis

Instr mit Platzhaltern möglich?

Instr mit Platzhaltern möglich?
10.07.2020 19:55:19
Hermann
Hallo zusammen,
in Dateinamen unterschiedlichster Länge suche ich mit Instr z.B. "- 01 -".
Funktioniert mit
Position = InStr(Dateiname, "- 01 -")
einwandfrei.
Nun kann aber statt 01 auch 02, 03, 04 bis 99 alles vorkommen.
Habe bereits * ? # ausprobiert, mache aber anscheinend etwas falsch.
Wer kann helfen?
Vielen Dank vorab!
Hermann

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Instr mit Platzhaltern möglich?
10.07.2020 20:08:17
Luschi
Hallo Hermann,
warum googelst Du nicht! Ich habe das getan mit: vba instr Platzhalter
und schon fiel es mir wie die Schuppen aus den Haaren: Like statt =
Gruß von Luschi
aus klein-Paris
AW: Instr mit Platzhaltern möglich?
10.07.2020 21:48:39
Hermann
Hallo Luschi,
natürlich habe ich vorher gegoogelt und auch "Like" gefunden und ausprobiert, aber - sorry - nicht erwähnt.
Nur Dein Vorschlag
Position Like InStr(…
funktioniert eben nicht.
Position ist eine Variable, die gefüllt werden.
Vielleicht ist es ja auch nur ein kleiner Syntaxfehler.
Gruss
Hermann
AW: Instr mit Platzhaltern möglich?
10.07.2020 22:34:08
Daniel
Hi
Like kann nur ermitteln, ob zwei Texte nach den Regeln übereinstimmen bzw ob der gesuchte Text im langen Text enthalten ist, aber keine Position ermitteln.
Entweder du nimmst die VBA-Variante von SUCHEN (mit WorksheetFunction.? Englisch Bezeichnung bitte selber suchen), das kann mit den Jokern ? und * arbeiten um Positionen zu finden (allerdings nicht mit # für Ziffern)
Oder du durchsuchst mit einer Schleife den Text Zeichen für Zeichen, dabei kannst du dann Like verwenden.
LangText = "xxxxx -12- xxx"
Suchtext = "-##-"
For POS = Len(LangText) - Len(Suchtext) + 1 To 1 step - 1
IF mid(LangText, POS, len(Suchtext)) Like Suchtext then exit for
Next
Gruß Daniel
Anzeige
AW: Instr mit Platzhaltern möglich?
10.07.2020 22:36:32
Werner
Hallo,
was mir überhaupt nicht klar ist, was hast du eigentlich vor?
Gruß Werner
AW: Instr mit Platzhaltern möglich?
10.07.2020 22:44:00
Hermann
Hallo Werner,
möchte den Dateinamen ändern, indem alles was links von 01, 02, 03 … 99 steht abgeschnitten wird. Das funktioniert dann auch wie gewünscht, aber deshalb brauche ich die Position.
Gruss
Hermann
Wenn alles,...
11.07.2020 10:05:31
Case
Hallo Hermann, :-)
... was links von der Zahl steht abgeschnitten werden soll, könntest du alternativ auch "RegExp" nehmen: ;-)
RegEx Beispiel...
Das kannst du direkt in deiner Sub nutzen, oder als Funktion mit Rückgabe aufrufen - siehe Beispieldatei.
Servus
Case

Anzeige
Das ist mit der UDF VLike möglich, ...
11.07.2020 02:13:00
Luc:?
…Hermann,
die den Like-Operator ggf mit Instr verbindet. Die kannst du sowohl in einer ZellFml als auch in einer VBA-Prozedur benutzen. Ohne 3.Argument (bzw diesem =0) fktioniert sie wie der vbOperator Like, mit 3.Arg zusätzlich noch wie Instr (bei 1 → letzte Stelle des SuchBegriffs der 1.Fundstelle von links) bzw wie InstrRev (bei -1 → 1.Stelle des SuchBegriffs der 1.Fundstelle von rechts). Damit wäre die 1.Position der gesuchten einmaligen (!) ZeichenKombi (-) im Namenstext mit folgd Fml möglich: pos = VLike(namenstext, "*- ## -*", -1)
Als ZellFml zB: =TEIL(A1;VLike(A1;"*- ## -*";-1);99) → Hier Link integriert!
Morhn, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Nichtsdestotrotz Durchblick verbessern mit …

Anzeige
AW: Instr mit Platzhaltern möglich?
11.07.2020 09:19:07
Sigi
Hallo Hermann,
pack die InStr() in eine Schleife. Da nur die Ziffern 01 - 99 vorkommen können, sind das ja nur 99 (od. bei mir 100) Schleifen. Für VBA ein Klacks!
(s. Mappe) mit Fkt. InStr00()
Sigi
https://www.herber.de/bbs/user/138962.xlsm
Gelöst! Vielen Dank!
11.07.2020 10:47:47
Hermann
Für alle Ideen und Vorschläge vielen Dank!
Habe wieder einiges gelernt. Bin noch am Feinschliff (tendiere zu der Schleifenlösung).
Gruss
Hermann
am einfachsten mit Suchen, in VBA:
11.07.2020 13:14:42
Daniel

Position = Worksheetfunction.Search("- ? -", Dateiname)
Gruß Daniel
Perfekt -> am einfachsten mit Suchen, in VBA
11.07.2020 14:20:36
Hermann
Einfacher geht's wirklich nicht.
Danke
Hermann
Anzeige
Nachfrage zu: am einfachsten mit Suchen, in VBA
11.07.2020 22:08:54
Hermann
Hallo Daniel,
kann es sein, dass in Worksheetfunction.Search("- ? -", Dateiname) nur die Platzhalter ? funktionieren und ## für Zahlen nicht?
Funktioniert mit ? natürlich, wollte aber mit ## auf Nummer sicher gehen, weil es um rund 40.000 Dateien geht, die umbenannt werden sollen.
Gruss
Hermann
Richtig, Suchen kennt nur * und ?
11.07.2020 22:38:06
Daniel
Mit VLike wär's möglich gewesen! owT
12.07.2020 02:33:40
Luc:?
:-?
So passt's für mich ...
13.07.2020 17:59:46
Hermann
Habe mich letztendlich für die Schleifenlösung entschieden, die - für mich überraschend - sehr schnell ist.
Nochmals danke für alle Tipps und Hinweise!
Gruss
Hermann

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige