Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1908to1912
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

Textsplit / TEXTTEILEN / Split

Textsplit / TEXTTEILEN / Split
16.12.2022 09:19:42
MCO
Guten Morgen!
Hat einer von euch schon die TEXTTEILEN-Funktion getestet?
Standard ist klar: Teilt Texte nach Trenner.
Erweitert ist klar: Teilt Text nach mehreren Trenner (wie Text in Spalten auch)
Jetzt hätte ich die erweiterte Version gern in VBA umgesetzt. Bisher hab ich SPLIT genutzt, musste aber alle verschiedenen Trennzeichen aber vorher durch 1 einzelnes Ersetzen um zum Ergebnis zu kommen.
Mit TEXTTEILEN geht es ja nun einfacher und mit der Formel.

=TEXTTEILEN("das ganze jahr,ist,schon,wieder;um.das ganze jahr,ist,schon,wieder;um";{" ";";";","}) 
komme ich auch zum passenden Ergebnis
Wenn ich das aber versuche in der englischen Formel in VBA umzusetzen laufe ich auf Fehler bei der runden Klammer:

WorksheetFunction.TEXTSPLIT(txt,{" ",";",","})
Mehrer Trennzeichen bei SPLIT einzufügen ist mir auch nicht gelungen

    text_var = Split(txt, Array(";", ","))
text_var = Split(txt, ";", ",")
text_var = Split(txt, (";".","))
Kann mir jemand helfen, die richtige Syntax herzustellen?
Danke schön!
Gruß, MCO

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Zeichne d. Tabellenformel auf! Nicht WSF.Textsplit
16.12.2022 09:26:23
lupo1
Aufzeichnung:
16.12.2022 09:46:08
MCO
Hallo Lupo1,
aufgezeichnet kommt raus

    ActiveCell.Formula2R1C1 = "=TEXTSPLIT(""das ganze jahr,ist,schon,wieder;um.das ganze jahr,ist,schon,wieder;um"",{"" "";"";"";"",""})"
Das hilft mit aber doch nicht, wenn ich ein VARIANT erzeugen will um in VBA damit weiterzuarbeiten.
Oder hab ich Dich falsch verstanden?
Gruß, MCO
Es ging mir nur um die Interpunktion ...
16.12.2022 09:47:56
lupo1
... die man sich als endlich beschränkter Mensch in anderen Sprachen wie Englisch nicht merken kann oder möchte.
Nun kannst Du damit Dein WSF füttern. Oder solltest Du können.
Wenn es so einfach wäre...
16.12.2022 10:01:41
MCO
... dann hätt ich es schon umgesetzt. Nichtmal die runden Klammern werden akzeptiert. Array auch nicht, Punkte als Trenner im Array auch nicht.
Ich bin weder experimetierfaul noch google-unfähig, aber hier mal ne Frage nach einer Syntax zu stellen, die eine recht neue Funktion betrifft ist kein Verbrechen. Von den typischen Tomaten auf den Augen bzw. Wald u. viele Bäume usw. mal ganz abgesehen.
Außerdem könnte es anderen Nutzern ebenfalls hifreich sein, das mal zu dokumentieren.
Erleuchte uns mit deinem Wissen, wenn es doch so simpel zu lösen ist....
Gruß, MCO
Anzeige
Bla bla bla
16.12.2022 10:15:46
lupo1
... statt den Fehler zu zeigen, der sich daraus ergibt.
Vermutlich gibt es bei meinem Verfahren "Gänse um die Gänse", also 3fach- oder 4fach-Gänse. Das kapierst Du aber schon? Und bekommst die weg?
AW: Wenn es so einfach wäre...
16.12.2022 10:25:52
peterk
Hallo
Ich vermute das TextSplit in VBA NICHT zur Verfügung steht (auch nicht als WorksheetFunction).
Peter
Danke, Peter.
16.12.2022 10:47:24
MCO
Selbst eine negative Antwort ist etwas, mit dem man arbeiten kann.
Dieses Hin- u. Her-Diskutieren macht mir persönlich keine Freude.
Gruß, MCO
Da stellt sich die Frage, wie Du WSF eingibst
16.12.2022 10:58:48
lupo1
Der VBA-Editor hat Intellisense. Und 'nen Compiler.
Idee: RegExp
16.12.2022 09:41:41
Yal
Hallo MCO,
mit regular Expressions könntest Du eine oder eine Gruppe von Trenner durch einen einzigen Trenner ersetzen dann splitten,
oder direkt die Ergebnisse den Suche nach allem was die Trennzeichen nicht trifft.
Letzteres stelle ich mir komplizierter vor. Vor allem scheint VBA nicht die komplette Palette der RegEx zu implementieren.
VG
Yal
Anzeige
RegExp, Vollständigkeitshalber
16.12.2022 10:01:03
Yal
Moin zusammen,
zuerst nur g'schwätzt, dann g'schafft:

Public Function RegExp_replace(ByVal Text As String, ByVal Pattern As String, Optional Replacer = "|") As String
'mit Anbindung an "Microsoft VBScript Regular Expressions 5.5"
Dim RegEx As New RegExp
With RegEx
.Pattern = Pattern
.IgnoreCase = True
.Global = True
.MultiLine = True
RegExp_replace = .Replace(Text, Replacer)
End With
End Function
Sub test()
Debug.Print RegExp_replace("ich bin, dein;Vater.,!", "(\.,)|(, )|[;,\. ]")
End Sub
VG
Yal
AW: Textsplit / TEXTTEILEN / Split
16.12.2022 10:40:21
Daniel
Hi
VBA kann keine Matrixformeln berechnen wie Excel es kann.
In VBA musst du die daraus resultierende Schleife selber programmieren.
Also in deinem Fall so

For each Trz in Array(",", ";", ,"!", ":", "?")
DeinText = Replace(DeinText, Trz, " ")
Next
TeilTexte = Split(DeinText, " ")
Andere Möglichkeit:
Man lässt die Formel von Excel berechnen.
Dazu schreibt man dann die Formel in die Zelle und liest das Ergebnis aus, oder man verwendet
=Evaluate(" Formel als Text in Englisch mit A1-Adressen")
Gruß Daniel
Anzeige
AW: Textsplit / TEXTTEILEN / Split
16.12.2022 10:49:11
MCO
Danke, Daniel!
Elegante Lösungen...
Gruß, MCO

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige