
Ich habe eine komplizierte Formel, die ich in einer Tabelle verwenden möchte, während ich die Auswirkungen der Änderung einer Zelle in der Formel aufzeichnen möchte.
=($E$9+J2)-((($B$9+J2)+($B$23*200*$B$15)+(1E+99-1)*(($B$9+J2)*(1.1+(1-$B$23)*(0.75+($B$22*$B$15*0.4))*$B$15)+($B$23*200*$B$15)+$B$23*(FLOOR.MATH(1E+99/3)*200*$B$15/MAX(1,1E+99-1))))*$B$12/1E+99)*($E$9+J2)/((($E$9+J2)+($E$23*200*$E$15)+(1E+99-1)*(($E$9+J2)*(1.1+(1-$E$23)*(0.75+($E$22*$E$15*0.4))*$E$15)+($E$23*200*$E$15)+$E$23*(FLOOR.MATH(1E+99/3)*200*$E$15/MAX(1,1E+99-1))))*$E$12/1E+99)
Wie Sie sehen, gibt es einige sich wiederholende Funktionen, die ich durch Ersetzen zu vereinfachen versucht habe.
=($E$9+J2)-SUBSTITUTE($B$29,$B$9,($B$9+J2))*$E$9/SUBSTITUTE($E$29,$E$9,($E$9+J2))
Das funktioniert nicht, weil der Ersatz tatsächlich dasErgebnisder Funktionen in Zeichenfolgen und Suchen nach Instanzen, anstatt die Funktion selbst zu konvertieren.
Wenn wir in einer Computersprache programmieren würden, könnten wir einfach eine Methode mit anderen Argumenten aufrufen, aber ich bin nicht sicher, ob Excel dazu in der Lage ist.
====
Um die Herausforderung in dieser "vereinfachten" Tabelle zu veranschaulichen, habe ich zwei Formeln
| A | B | C |
1 | 1 101 202
2 | 100
Zelle B1 hat diese Formel
=A1+A2
und Zelle C1 hat diese Formel
=SUBSTITUTE(B1,A1,A1*2)
Ich möchte, dass Zelle C1 102 statt 202 ist. Gibt es eine Möglichkeit, jede Instanz von A1 in der Formel anstelle der resultierenden Zeichenfolge zu ersetzen?
Antwort1
Ich denke, die beste Annäherung an das, was Sie wollen, basierend auf dem, was Sie in Ihren Kommentaren zeigen, wäre so etwas wie
=LET(x,A1*2,y,A2,x+y)
.
Wenn Sie die Formel in B2 analysieren müssen, müssen Sie wahrscheinlich einen Formelparser in VBA schreiben. Es könnte aber einfacher sein, stattdessen einfach die gesamte Formel als VBA-UDF zu schreiben.
Hinweis: LET
ist nur in den neuesten Versionen von Excel O365 verfügbar