Ich habe eine lange Formel mit folgender Struktur:
=IF(!X!<>0,!X!+A1,"")
wo ! X! ist eine sehr lange Formel.
Gibt es eine Lösung, um zu vermeiden, dass das! X! zweimal? Ich brauche es aus zwei Gründen:
- Um die Formel für den Benutzer des Blattes lesbar zu machen
- Um die Prozesszeit zu reduzieren
Ich freue mich über jede Hilfe.
Danke, Dio
To reduce the process time
, müssen Sie das Ergebnis natürlich irgendwo speichern, andernfalls muss Excel den Wert erneut berechnen, wenn die Bedingung übereinstimmt. Division ist auch eine sehr kostspielige OperationAntworten:
Ein anderer Ansatz ist die Verwendung der doppelten Inversion :
Wenn die really_long_formula zu auswertet 0 , erhalten Sie eine Division durch Null bekommen und das
IFERROR()
wird es fangen!Bitte beachten Sie, dass der übliche (und beste) Weg , um diese Anforderung zu erfüllen, eine Hilfszelle ist.
quelle
1/1/x
mehrmals mit 100.000 Zufallszahlen in Excel getestet , und nur in 1,4% der Fälle gab es einen Rundungsfehler. Der maximale relative Fehler, den ich jemals gefunden habe, war 1,6e-16, was praktisch Null ist. Interessanterweise zeigten Ganzzahlen niemals Rundungsfehler (getestet mehrere Bereiche von 0 bis 1e14). Daher kann diese Antwort unter dem Gesichtspunkt der Reinheit / Reinheit verpönt sein, jedoch nicht unter dem Gesichtspunkt der praktischen Berechnung.Die offensichtliche Antwort besteht darin, die Formel in eine Arbeitszelle außerhalb des Hauptblatts einzufügen. Wenn Sie beispielsweise verwenden
H1
, stellen Sie Folgendes ein:Ihre Formel lautet dann:
Dies ist typisch für das, was man in einer anderen Programmiersprache tun würde.
quelle
1/(1/x)
was nicht immer genau der gleiche ist wiex
), insbesondere wenn Sie mit ganzzahligen Daten arbeiten. Es ist auch nicht allgemeiner anwendbar (z. B. Überprüfung auf weniger als Null). (Kommentar gekreuzt mit @ LưuVĩnhPhúc unter akzeptierter Antwort.)Brauchen Sie wirklich das Ergebnis, um
""
im falschen Fall zu sein? Wenn die Zelle nur leer aussehen soll (z. B.=ISNUMBER()
später nicht mehr), können Sie die bedingte Formatierung verwenden , um den Inhalt im falschen Fall auszublenden.Das bedingte Format, das Sie auf die Zelle anwenden, damit nichts angezeigt wird , ist das benutzerdefinierte Format
""
wie dieses (es ist auf Portugiesisch, aber Sie haben die Idee):Die Formel in der Zelle ist wie erwartet einfach
=!X!+A1
.Die bedingte Formatierungsformel könnte sein
=!X!=0
, aber das würde eine Neuberechnung erzwingen!X!
, die Sie nicht wollen (Ihr "Punkt 2"). Es ist besser, die Zelle selbst zu nutzen=B1=A1
(vorausgesetzt, unsere Zelle ist B1 ) - das würde bedeuten!X! = 0
.Selbst wenn der Zelleninhalt tatsächlich vorhanden sein muss
""
, können im Arbeitsblatt normalerweise geringfügige Änderungen vorgenommen werden, damit dieser Ansatz verwendet werden kann. Wenn dies der Fall ist, hinterlassen Sie einen Kommentar, der die Situation beschreibt.quelle
Wenn Sie keinen Helfer hinzufügen können Spalte , warum nicht ein ganzes Arbeitsblatt hinzufügen? Dies hat mehrere Vorteile:
=IF(X<>0,X+A1,"")
D5
.helper!D5
im Hauptblatt.Die Nachteile, die ich sehen kann, sind:
sheetname!D5
statt nur als referenzierenD5
.Ich denke, dass dies für viele Anwendungsfälle eine gute Lösung ist, wenn man die Vor- und Nachteile abwägt. Es gibt Situationen, in denen es nicht optimal ist, obwohl mir im Moment keine einfällt.
quelle
Eine noch nicht vorgeschlagene Option ist das Erstellen einer benutzerdefinierten Funktion. Sie müssten die Registerkarte Entwickler in der Menüleiste aktivieren (google it) und ein Modul erstellen.
In der Formelleiste würden Sie dann tun
HINWEIS: Dies wird jetzt zu einer XLSX-Datei (mit Makros) und erfordert möglicherweise zusätzliche Berechtigungen in einem Unternehmensnetzwerk, da Makros für böswillige Zwecke verwendet werden können und einige E-Mail-Filter sie blockieren. Die Funktionen sind nicht dokumentiert, daher müssen Sie Notizen zu Ihren Funktionen bereitstellen. Ich finde es nützlich, alle meine Funktionen udf_xxxxx aufzurufen, damit klar ist, dass es sich nicht um eine integrierte Funktion handelt
Es gibt auch einige andere GOTCHAs mit UDFs. Unter diesem Link finden Sie einige gute Tipps: http://www.decisionmodels.com/calcsecretsj.htm
quelle