Salve,
Quindi oggi ho un problema con le formule che non si aggiornano nella mia tabella dati.
Ho un grande tavolo con un sacco di misurazioni. Esiste uno script che imposta colonne con formule per valutare le specifiche contenute nelle variabili della tabella dati. Queste formule vengono generate nel modo seguente:
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";
)
)
))); Queste formule funzionano bene ma valutano solo quando vengono impostate. Quando provo a modificare un valore in una colonna, la specifica non viene valutata. Ho controllato le proprietà della colonna e le valutazioni delle formule sono abilitate. Le formule vengono rivalutate, seleziono e deseleziona "Elimina valutazione formula".
Ho provato a modificare questo script sostituendo "Columns" con "As Columns" e rimuovendo []. Ciò non ha risolto il problema e ha rallentato del 50% l’implementazione di queste formule.
Ho provato a impostare manualmente le formule con lo stesso modello ma utilizzando i nomi delle colonne effettivi (:Column anziché Column (expr (ColumnName ) e funzionano correttamente. Ad esempio, ogni volta che cambio un valore in una delle colonne, la formula viene valutata subito.
Quindi, esiste un modo per forzare la rivalutazione dopo la modifica delle celle? ** NON cliccando il pulsante rosso e rivalutando tutte le formule della tabella dati **
O forse un'altra soluzione sarebbe quella di avere uno script che scriva i nomi effettivi delle colonne (ad esempio :Column ) invece di avere Eval(expr(column (columname))).
Quindi assomiglia a questo:

invece di apparire così:

Qualche idea ?
Non posso testarlo ma penso che questo approccio potrebbe funzionare:
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
)
)
);