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

Fomel aufsplitten

Fomel aufsplitten
Joachim
Hallo
gibt es eine einfache Möglichkeit, die einzelnen Elemente einer Formel auszulesen:
Bsw:
=37+TestName*MwST-13
Als Ergebnis sollten dann
  • 37

  • TestName

  • MwST

  • 13

  • existieren, zB in einem Array.
    Nach meinen bisherigen Recherchen funktioniert Split nur mit einem Trennzeichen.
    Danke vorab

    5
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Benutzer
    Anzeige
    So ist es! Dann zyklisch mit verschiedenen...
    15.09.2010 15:56:59
    Luc:-?
    …Trennzeichen anwenden, Joachim;
    die können auch in einem Feld (Array) stehen. Dazu musst du natürlich berücksichtigen, dass beim vorherigen Lauf schon ein Array entstanden sein könnte und dann dessen Elemente einzeln weiter splitten. Das würde also ziemlich verwirrend wdn…
    Besser ist es wohl, alle potenziellen Trennzeichen durch ein einziges, nämlich " " zu ersetzen (Replace), dabei kannst du den Zyklus und das Trennzeichenfeld ökonomischer einsetzen. Anschließend reicht dann ein einfaches Split(formel), denn " " ist das Default-Trennzeichen.
    Gruß Luc :-?
    Anzeige
    vielleicht mit Regexp
    15.09.2010 16:01:49
    Tino
    Hallo,
    vielleicht geht es so?
    Sub Test_Bsp()
    Dim Regex As Object, objMatch As Object
    Dim strFormel$
    
    strFormel = "=37+TestName*MwST-13"
       
    Set Regex = CreateObject("Vbscript.Regexp")
        
        With Regex
          .MultiLine = True
          .Pattern = "\w+"
          .Global = True
          
          For Each objMatch In .Execute(strFormel)
             Debug.Print Trim$(objMatch)
          Next objMatch
        
        End With
        
    Set Regex = Nothing
    End Sub
    
    Gruß Tino
    Anzeige
    AW: vielleicht mit Regexp
    15.09.2010 16:08:16
    Tino
    Hallo,
    mit .Pattern = "[\w| äüöß]+" müsste es besser funktionieren.
    Gruß Tino
    AW: vielleicht mit Regexp
    16.09.2010 15:49:37
    Joachim
    Hallo Tino, hallo JogyB,
    ich habe das mal ausprobiert und es scheint super zu klappen.
    Danke nochmals
    AW: Fomel aufsplitten
    15.09.2010 16:29:18
    JogyB
    Hallo Joachim,
    könnte mit VBScript.RegExp klappen, aber da müsste ich jetzt auch mal grübeln, wie man den regulären Ausdruck am besten bastelt, so dass wirklich alles abgefangen wird. Aber +-*/()= wegzubekommen ist ganz einfach.
    Function zerlegeFormel(ByVal meineFormel As String) As String()
    Dim regEx As Object
    Dim myMatch As Object
    Dim Matches As Object
    Dim tempStr() As String
    Dim i As Long
    Set regEx = CreateObject("VbScript.Regexp")
    ' Suchmuster festlegen
    regEx.Pattern = "[^+\-\*/\(\)=]+"
    ' groß/klein egal
    regEx.IgnoreCase = True
    ' mehrere Treffer suchen
    regEx.Global = True
    Set Matches = regEx.Execute(meineFormel)
    If Matches.Count > 0 Then
    ReDim tempStr(1 To Matches.Count)
    For i = 1 To Matches.Count
    tempStr(i) = Matches.Item(i - 1)
    Next
    zerlegeFormel = tempStr
    Else
    ' Gibt Array mit Ubound 0 zurück, so von erfolgreicher
    ' Suche zu unterscheiden
    ReDim zerlegeFormel(0 To 0)
    End If
    End Function
    

    Gru
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige