Makro:Zerlegen einer Formel in der viele Werte addiert werden

Aus XIMES

Wechseln zu: Navigation, Suche

Hintergrund

Dieses Makro dient dazu, aus einer formel, zB

 =24+91+185+93+73+57+67+264+784+1030+594+428+330+533

die Einzelwerte herauszuholen.

Wird als Teil von anderen Sachen verwendet. ZB wenn Tageswerte in Formel statt als Einzelwerte verwendet werden.


Makro

 'Hilfsfunktionen für das Parsen
 Function GetFormelwert(was As Variant, Optional fromPos As Integer = 1) As Variant
 'Was beinhaltet die zu zerlegende Formel
 'über fromPos wird gesteuert
 Dim i As Integer
 Dim pos As Integer
 Dim kette As String
 
 If fromPos = 0 Or fromPos > Len(was) Then
       GetFormelwert = "END"
 Else
       '*** ANPASSEN, nach was wird gesucht
       pos = InStr(fromPos + 1, was, "+")
       
       If pos > 1 Then
             GetFormelwert = Left(was, pos - 1)
             GetFormelwert = Right(GetFormelwert, Len(GetFormelwert) - fromPos + 1)
             fromPos = pos + 1
             
         Else
             GetFormelwert = Right(was, Len(was) - fromPos + 1)
             fromPos = Len(was) + 1
         End If
       
 End If
 
 End Function


Aufruf aus Struktur

Zb. Wenn der Range WERTE jeweils Formeln enthält

     wert= GetFormelwert(WERTE(i, 1).FormulaR1C1, pos)
                       
     While wert<> "END"
            printquick result, printline, wert                            
            wer= GetFormelwert(WERTE(i, 1).FormulaR1C1, pos)
     Wend
Persönliche Werkzeuge