Ich versuche, eine Formel in einer Google-Tabelle zu erstellen, die so aussieht:
if (x < 0, x + 1, x)
Es bedeutet, wenn x
kleiner ist als 0
, return x + 1
, sonst return x
.
Doch x
selbst ist ein Ausdruck, zum Beispiel A1 + B1
. So endete ich mit:
if ((A1 + B1) < 0, (A1 + B1) + 1, (A1 + B1))
Wie kann ich den Ausdruck (A1 + B1)
in einer temporären Variablen speichern x
, damit ich dies tun kann? :
x = (A1 + B1);
if (x < 0, x + 1, x);
Der aktuelle Ausdruck in meiner Tabelle sieht folgendermaßen aus:
if(
timevalue(Sheet1!$D10)-timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))))
< 0,
1 +
timevalue(Sheet1!$D10)-timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))))
,
timevalue(Sheet1!$D10)-timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))))
)
Ich versuche, es kürzer und übersichtlicher zu gestalten:
x = timevalue(Sheet1!$D10) - timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))));
if(
x
< 0,
1 +
x
,
x
)
google-sheets
google-apps-script
Pacerier
quelle
quelle
Antworten:
Am Ende verwende ich häufig Zellen als Variablen für häufig verwendete Berechnungen und benenne sie tatsächlich mit "benannten Bereichen". Es macht es einfacher, über die Formel nachzudenken, die Sie entwickeln möchten. Sie können diese Zellen ausblenden, wenn Sie nicht möchten, dass sie angezeigt werden.
quelle
Kurze Antwort
Derzeit verfügt Google Sheets nicht über die Funktion, einer durch eine Formel definierten Variablen anstelle eines Zell- oder Bereichsverweises einen Namen zuzuweisen. Um eine Formel mit solchen Variablen zu verwenden, können Sie auch benutzerdefinierte Funktionen verwenden.
Benutzerdefinierte Funktionen in Google Sheets
Benutzerdefinierte Funktionen werden in an Google Apps Scripts gebundenen Projekten oder Google Sheets-Add-Ons definiert. Sie können nur verwendet werden, um Werte zurückzugeben, nicht um Aufgaben wie das Senden einer E-Mail zu automatisieren.
Eine benutzerdefinierte Funktion ähnelt einer JavaScript-Funktion und kann mithilfe von JSDOC integrierte Funktionen wie die automatische Vervollständigung hinzufügen und den Popup-Formel-Helfer anzeigen. Auch eine benutzerdefinierte Fehlermeldung könnte enthalten sein.
In dem in der Frage dargestellten Fall sollte die gewünschte Struktur der in einer Zelle anzuzeigenden Formel die folgende Struktur haben
wo
x
könnte eine benutzerdefinierte Funktion sein.Das Folgende ist ein einfaches Beispiel für eine benutzerdefinierte Funktion, die JSDOC verwendet .
Die Formel unter Verwendung der obigen benutzerdefinierten Funktion mit der in der Frage angegebenen Struktur sieht folgendermaßen aus
row()
könnte anstelle einer Konstante verwendet werden, um als Eingabe die Zeile zu verwenden, in der die Formel platziert ist.Um die in der Frage dargestellte explizite Formel zu "emulieren", sollten die integrierten Formeln durch JavasScript / Google Apps Script-Funktionen ersetzt werden.
Verweise
quelle
Ich mache einige Versuche damit (ich stimme zu, dass dies eine sehr nützliche Funktion sein würde, insbesondere für lange Formeln. Folgendes habe ich bisher geschrieben:
Theoretisch wäre dies nützlich, um eine komplexe Zellformel zu vereinfachen, wie zum Beispiel:
das mögen:
Zusätzlich
D_VAR#'s
undVAR#'s
kann in das Skript geschrieben werden, um bei Bedarf mehrere Variablendeklarationen und Aufrufe zu ermöglichen.Es scheint jedoch, dass
D_VAR0
die umgebrochene Variable nicht richtig im variables [] -Array gespeichert wird.Wenn ich ein Element manuell in das Array eingebe, kann VAR0 darauf zugreifen und es in die aktive Zelle zurückgeben. Beispielsweise:
Das lässt mich mit zwei Fragen zurück. Wenn das Folgende möglich ist, ist es meines Erachtens möglich, temporäre Variablen über eine benutzerdefinierte Funktion zu deklarieren und aufzurufen:
Wenn benutzerdefinierte Funktionen auf Array-Elemente zugreifen können , können sie auch Elemente in einem Array speichern ? Wenn das so ist, wie?
Wenn benutzerdefinierte Funktionen Elemente in einem Array speichern können, sind sie dann nur in derselben zusammenhängenden Formel in derselben Zelle verfügbar? Oder kann auf dieselbe gespeicherte Variable in einer anderen Zelle zugegriffen werden? Beispiel:
Cell A1 = D_VAR0(sum(3,5))
Cell D4 = VAR0() //would this return 8 in cell D4? It hasn't worked in my testing.
quelle