Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: mit VBA Text aufsplitten auf mehrere Zellen

mit VBA Text aufsplitten auf mehrere Zellen
01.10.2014 09:46:55
Franzi
Hallo zusammen,
folgende Frage.
ich möchte die Gleichung
A = B + C - D
splitten, sodass jeder Buchstabe in einer seperaten Zelle steht.
mit Teil = Split(Cells(Zeile, 1), "=") kann ich nur A seperieren, wie mache ich das aber mit B,C und D?
Danke für eure Hilfe,
Grüsse
Franzi

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: mit VBA Text aufsplitten auf mehrere Zellen
01.10.2014 10:26:21
Daniel
Hi
1. Gleichung in eine Variable lesen
GL = Cells(Zeile, 1).value
2. In der Variablen alle Rechenzeichen durch das Leerzeichen ersetzen:
GL = Replace(GL, "=", " ")
GL = Replace(GL, "+", " ")
GL = Replace(GL, "-", " ")
Usw für alle möglichen Zeilen
3. Überzählige Leerzeichen entfernen:
GL = Worksheetfunction.trim(GL)
4. Auf die einzelnen Zeichen kannst du dann so zugreifen:
Teil1 = Split(GL, " ")(0)
Teil2 = Split(GL, " ")(1)
Teile = Split(GL, " ")(2)
Usw
Gruß Daniel

Anzeige
AW: mit VBA Text aufsplitten auf mehrere Zellen
01.10.2014 10:50:19
fcs
Hallo Franzi,
Daniels Vorschlag mit dem Leerzeichen als Trennzeichen funktioniert bei mir nicht 100%.
Günstiger ist es + und - durch = zu ersetzen, bevor man die Split-Funktion einsetzt.
Gruß
Franz
Sub TestSplit_2()
Dim strText As String, strSep As String
Dim Zeile As Long
On Error Resume Next
strSep = "=" 'oder anderes Zeichen, das in den Zellinhalten nicht vorkommt
For Zeile = 3 To 5
strText = Cells(Zeile, 1).Text
If strText  "" Then
strText = Replace(strText, "=", strSep)
strText = Replace(strText, "+", strSep)
strText = Replace(strText, "-", strSep)
strText = Trim(strText)
Cells(Zeile, 2) = Trim(Split(strText, strSep)(0))
Cells(Zeile, 3) = Trim(Split(strText, strSep)(1))
Cells(Zeile, 4) = Trim(Split(strText, strSep)(2))
Cells(Zeile, 5) = Trim(Split(strText, strSep)(3))
End If
Next
End Sub

Anzeige
AW: mit VBA Text aufsplitten auf mehrere Zellen
01.10.2014 11:07:23
Franzi
boah, das ist echt krass :)
vielen Dank für eure hilfe!!

AW: mit VBA Text aufsplitten auf mehrere Zellen
01.10.2014 11:39:14
Daniel
Hast du mal versucht herauszufinden, warum das mit dem Leerzeichen bei dir nicht funktioniert?
Enthalten deine "Variablen" in der Gleichung vielleicht selber ein Leerzeichen?
Gruß Daniel

AW: mit VBA Text aufsplitten auf mehrere Zellen
01.10.2014 16:40:04
fcs
Hallo Daniel,
ja der Beispieltext hatte beim Testen Leerzeichen. Ich hatte die von Franzi gepostete Gleichung in eine Zelle kopiert.
Es funktioniert dann, wenn man erst alle Leerzeichen durch "" (Leerstring) ersetzt und danach dann =, + und - durch Leerzeichen ersetzt.
Gruß
Franz

Anzeige
AW: mit VBA Text aufsplitten auf mehrere Zellen
01.10.2014 17:02:59
Daniel
Hi
die mehrfachen Leerzeichen hintereinander, die entstehen, wenn vor und nach den Rechenzeichen Leerzeichen vorhanden sind und man die Rechenzeichenzeichen ebenfalls durch Leerzeichen ersetzt, werden durch das WorksheetFunction.Trim(GL) (Schritt 3) eleminiert und zu einem Leerzeichen zusammengefasst.
Hast du diesen Schritt ebenfalls übernommen?
und wenn ja, hast du dann auch wirklich Worksheetfunction.Trim() verwendet und nicht nur Trim()?
Das sind nämlich zwei unterschiedliche Funktionen.
Worksheetfunction.Trim() elemeniniert die Leerzeichen am Anfang und Ende des Strings, sowie alle mehrfachen Leerzeichen innerhalb des Strings
[VBA.]Trim hingeben eleminiert nur die Leerzeichen am Anfang und Ende, aber nicht die zwischendrin!
Gruß Daniel

Anzeige
Das ginge auch in einem Zug mit einer ...
01.10.2014 13:10:07
Luc:-?
…UDF wie SplitVx, Franzi,
denn die ist u.a. auch speziell für solche Fälle gemacht:
=SplitVx("A = B + C - D";{" = "." + "." - "})
Die UDF findest du im Archiv in einer von mir entsprd ergänzten u. hochgeladenen BspDatei von Oberschlumpf.
Gruß, Luc :-?
Besser informiert mit …
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Text mit VBA aufsplitten in Excel


Schritt-für-Schritt-Anleitung

Um Text in Excel mithilfe von VBA auf mehrere Zellen zu splitten, folge diesen Schritten:

  1. Gleichung in eine Variable lesen:

    GL = Cells(Zeile, 1).Value
  2. Rechenzeichen ersetzen: Ersetze die Rechenzeichen durch ein Leerzeichen. Dies erleichtert das Splitten.

    GL = Replace(GL, "=", " ")
    GL = Replace(GL, "+", " ")
    GL = Replace(GL, "-", " ")
  3. Überzählige Leerzeichen entfernen: Nutze WorksheetFunction.Trim, um überflüssige Leerzeichen zu eliminieren.

    GL = WorksheetFunction.Trim(GL)
  4. Einzelne Teile splitten: Greife auf die Teile der Gleichung zu.

    Teil1 = Split(GL, " ")(0)
    Teil2 = Split(GL, " ")(1)
    Teile = Split(GL, " ")(2)
  5. Die Teile in Zellen ausgeben: Wechsle zu den entsprechenden Zellen, um die Teile der Gleichung einzufügen.


Häufige Fehler und Lösungen

  • Problem: Die Split-Funktion liefert unerwartete Ergebnisse.

    • Lösung: Stelle sicher, dass vor und nach den Rechenzeichen keine Leerzeichen vorhanden sind. Ersetze alle überflüssigen Leerzeichen mit WorksheetFunction.Trim.
  • Problem: Fehler bei der Verwendung von Trim().

    • Lösung: Verwende immer WorksheetFunction.Trim() anstelle von Trim(), da diese Funktion auch die mehrfachen Leerzeichen innerhalb des Strings entfernt.

Alternative Methoden

Falls Du eine flexiblere Lösung benötigst, kannst Du die vba split mehrere trennzeichen-Funktion verwenden. Hierbei kannst Du verschiedene Trennzeichen angeben:

Function SplitVx(Text As String, Delimiters As Variant) As Variant
    Dim i As Long
    For i = LBound(Delimiters) To UBound(Delimiters)
        Text = Replace(Text, Delimiters(i), " ")
    Next i
    SplitVx = Split(WorksheetFunction.Trim(Text), " ")
End Function

Praktische Beispiele

Hier ein einfaches Beispiel, um die Gleichung „A = B + C - D“ zu splitten:

Sub TestSplit()
    Dim GL As String
    Dim Teile As Variant
    GL = "A = B + C - D"

    Teile = SplitVx(GL, Array("=", "+", "-"))

    For i = LBound(Teile) To UBound(Teile)
        Cells(1, i + 1).Value = Trim(Teile(i))
    Next i
End Sub

In diesem Beispiel wird die Gleichung in einzelne Teile aufgeteilt und in die Zellen A1 bis D1 eingefügt.


Tipps für Profis

  • Nutze die vba string teilen-Techniken, um auch komplexe Gleichungen effizient zu handhaben.
  • Achte darauf, alle möglichen Rechenzeichen, die Du verwenden möchtest, als Trennzeichen in die Funktion zu integrieren.
  • Halte Deine VBA-Module organisiert und kommentiere Deinen Code, um die Lesbarkeit zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Trennzeichen in einer Gleichung verwenden? Du kannst die vba split mehrere trennzeichen-Funktion verwenden, um mehrere Rechenzeichen gleichzeitig zu ersetzen.

2. Gibt es eine Möglichkeit, die Gleichung direkt in Excel zu splitten, ohne VBA zu verwenden? Ja, Du kannst die Funktionen TEXT.VERKETTEN und TEXT.SPLIT verwenden, allerdings bieten diese nicht die Flexibilität wie die VBA-Methoden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige