AW: Formel durch Makro Zerlegen
15.09.2021 16:07:06
Daniel
HI
beispielsweise so mit diesem Makro:
zur Ausführung die Zellen, die analysiert werden sollen, markieren und dann das Makro starten.
Die Ausgabe erfolgt für deine Beispieldatei im Blatt "Formalanalyse" ab Zeile 13
Sub FormelAnalyse()
Dim Zelle As Range
Dim Formel As String
Dim FormelA As String
Dim TeilText
Dim Zeile As Long
Dim T
Dim i As Long
Zeile = 12 'Start Ausgabe
For Each Zelle In Selection
Formel = Zelle.FormulaLocal
FormelA = Formel
For Each T In Array("*", "+", "-", "/")
FormelA = Replace(FormelA, T, "|" & T & "|")
Next
TeilText = Split(FormelA, "|")
For i = 1 To UBound(TeilText) Step 2
Zeile = Zeile + 1
With Sheets("Formelanalyse")
.Cells(Zeile, 3) = "!" & Zelle.Worksheet.Name & "!" & Zelle.Address(0, 0)
.Cells(Zeile, 4) = "'" & Formel
.Cells(Zeile, 5) = Zelle.Offset(0, -1).Value
.Cells(Zeile, 6) = TeilText(i)
.Cells(Zeile, 7) = TeilText(i + 1)
.Cells(Zeile, 8) = Range(TeilText(i + 1)).Offset(0, -1)
.Cells(Zeile, 9) = Range(TeilText(i + 1)).Offset(7 - Range(TeilText(i + 1)).Row, 0)
End With
Next
Next
End Sub
beachte, dass das ganze nicht sonderlich flexibel ist und nur für Formeln nach dem gezeigten Schema funktioniert, dh mit dem Aufbau
= Operator Faktor Operator Faktor ....
dh schon eine Klammersetzung lässt sich nicht mehr so ohne weiteres analysieren, außerdem muss auch vor dem ersten Faktor ein Operator stehen (ist in deinem Beispiel so gegeben)
Lediglich die Anzahl der Fakoren ist variabel.
zulässig als Operator sind die 4 Grundrechenarten +-*/
Gruß Daniel