Ich habe eine Spaltenformel, die ich häufig wiederverwenden muss. Der Zweck der Formel besteht darin, einen oder mehrere aufeinanderfolgende fehlende Zellenwerte mit dem obigen Wert abzulegen. Hier ist die Formel:
While( Is Missing( Lag( :Column 1, i ) ) & Row() - i > 1, i++ );
Lag( :Column 1, i );
(Die zweite Klausel in der While-Bedingung verhindert eine unendliche Schleife, wenn Zeile 1 IsMissing ist.) Und so sieht die Ausgabe aus, wenn sich die Formel in Spalte 2 befindet:

Ich verwende diese Formel so oft, dass ich dachte, ich könnte daraus eine Benutzerfunktion machen und das Skript im "On Open" -Skript an die Tabelle anhängen. Hier ist mein Versuch, eine Benutzerfunktion in einem Benutzernamensraum zu erstellen:
Names Default To Here( 1 );
util = New Namespace(
"util",
{
//This function fills in missing values from the value above.
Infill = Function( {col},
{Default Local},
i = 0;
While( And( Is Missing( Lag( col, i ) ), Row() - i > 1 ), i++ );
Return( Lag( col, i ) ) ;
) ;
}
);Ich füge dieses Skript der Tabelle hinzu und führe es aus. Dann ersetze ich die explizite Formel in Spalte 2 mit
util:Infill(Column 1)
Das geht aber nicht. Die Ausgabe sieht folgendermaßen aus:

Es sieht so aus, als würde die While-Schleife niemals ausgeführt.
Kannst du mir helfen, was falsch ist?