Hallo,
Heute habe ich ein Problem mit Formeln, die in meiner Datentabelle nicht aktualisiert werden.
Ich habe eine große Tabelle mit einer Reihe von Messungen. Es gibt ein Skript, das Spalten mit Formeln festlegt, um in Datentabellenvariablen enthaltene Spezifikationen auszuwerten. Diese Formeln werden auf folgende Weise generiert:
Eval( Eval Expr(Column(Concat(columnName," Spec"))<< Set Formula(
If( Column(expr(columnName))[]>Expr(USL),
Column(expr(Concat(expr(columnName)," Spec")))[]="High",
If( Column(expr(columnName))[]<EXPR></EXPR>Column(expr(Concat(expr(columnName)," Spec")))[]="OK";
)
)
))); Diese Formeln funktionieren einwandfrei, werden jedoch nur dann ausgewertet, wenn sie festgelegt sind. Wenn ich versuche, einen Wert in einer Spalte zu ändern, wird die Spezifikation nicht ausgewertet. Ich habe die Spalteneigenschaften überprüft und die Formelauswertungen sind aktiviert. Die Formeln werden neu ausgewertet. Ich aktiviere die Option „Formelauswertung unterdrücken“ und deaktiviere sie dann.
Ich habe versucht, dieses Skript zu ändern, indem ich „Columns“ durch „As Columns“ ersetzt und das [] entfernt habe. Dadurch wurde das Problem nicht gelöst und die Implementierung dieser Formeln verlangsamte sich um 50 %.
Ich habe versucht, Formeln manuell mit derselben Vorlage festzulegen, aber die tatsächlichen Spaltennamen (:Column anstelle von Column (expr (ColumnName) zu verwenden, und sie funktionieren ordnungsgemäß. Wenn ich beispielsweise einen Wert in einer der Spalten ändere, wird die Formel ausgewertet sofort.
Gibt es also eine Möglichkeit, bei der Änderung von Zellen eine Neubewertung zu erzwingen? ** Klicken Sie NICHT auf die rote Schaltfläche und bewerten Sie alle Formeln der Datentabelle neu. **
Oder vielleicht wäre eine andere Lösung, ein Skript zu haben, das die tatsächlichen Spaltennamen schreibt (z. B. :Column ), anstatt Eval(expr(column (columname))) zu haben.
Es sieht also so aus:

anstatt so auszusehen:

Irgendwelche Ideen ?
Ich kann es nicht testen, aber ich denke, dass dieser Ansatz funktionieren könnte:
Eval(
Substitute(
Expr(
nnn << Set Formula(
If(
ccc > uuu,
"High",
ccc < lll,
"Low",
"OK"
)
)
),
Expr( nnn ), Column( Concat( columnName, " Spec" ) ),
Expr( ccc ), Column( columnName ),
Expr( lll ), LSL,
Expr( uuu ), USL
)
)
);