Ciao,
qui avrei bisogno di qualche dritta....
Ho due colonne (per_Change) e Step (è un valore basato su una formula) e la colonna Per_Change è ordinata dai valori -ve a +ve.
Nel mio script ho bisogno di conoscere il numero massimo di righe, quindi ho creato una colonna di rango da 1 a 14 (ordine crescente come immagine allegata) e devo avere almeno 8 righe (a partire dal rango più alto).
Passaggi:
1. Escludi -ve valori nella colonna Per_Change
2. quindi in Col Step si basa su una formula e creerà alcuni valori "-ve" e "+ve" e alcuni valori "null". Nascondi ed escludi tutti i valori -ve in col Step. i valori nulli erano già nascosti ed esclusi in base a Col Per_Change poiché la formula genererà valori -ve.
3. Il mio requisito è avere almeno 8 valori (ordine decrescente). Nel mio esempio ci sono 6 stati di riga cancellati (rango 9-14) (2 righe aggiuntive dovrebbero essere discendenti, ovvero mostrare/unexclude rango 8 e 7 ma non dovrebbero includere valori "nulli" in uno scenario se ci sono più valori nulli e meno -ve o +ve valori nel passo col).
Passaggio 1 e 2, sono in grado di eseguire lo script JSL ma riscontro problemi nell'abilitare 2 righe aggiuntive.
Ho provato a utilizzare la funzione di ritardo e anche a creare colonne fittizie per abilitare l'ordine inverso, ma ho difficoltà a deselezionare righe aggiuntive.
.
Grazie!
Grazie per la pronta risposta... funziona!
CG, ho allegato una tabella dati, denominata PerChangeExample per emulare il tuo esempio.
Prova questo script
Names Default to Here(1);
dt = Data Table("PerChangeExample");
dt << select where(:Per_change < 0 | IsMissing(:Per_change) );
dt << exclude(1) << hide(1);
dt << select where(:Step < 0 | IsMissing(:Step) );
dt << exclude(1) << hide(1);
dt << clear select;
nexcl = nrow( dt << get excluded rows() );
if ( nrow(dt) - nexcl < 8,
for(i = nexcl, i > nrow(dt) -8 , i--,
if ( !IsMissing(:Step[i]),
dt << Select Rows(i);
dt << Exclude(0) << Hide(0);
dt << clear select;
)
); //end for i
); // end if
nexcl = nrow( dt << get excluded rows() );
if ( nrow(dt) - nexcl < 8, throw() ); //stop program execution if still not enough data.