Bonjour,
J'ai besoin de conseils ici....
J'ai deux colonnes (per_Change) et Step (c'est une formule basée sur des valeurs) et la colonne Per_Change est triée des valeurs -ve à +ve.
Dans mon script, j'ai besoin de connaître le nombre maximum de lignes, j'ai donc créé une colonne de classement de 1 à 14 (ordre croissant comme image ci-jointe) et je dois avoir au moins 8 lignes (en commençant par le rang le plus élevé).
Pas:
1. Exclure les valeurs -ve dans la colonne Per_Change
2. puis dans Col Step est basé sur une formule, et cela créera des valeurs "-ve" et "+ve" et des valeurs "nulles". Masquez et excluez toutes les valeurs -ve dans la col Step. les valeurs nulles étaient déjà masquées et exclues en fonction de Col Per_Change puisque la formule générera des valeurs -ve.
3. Mon exigence est d’avoir au moins 8 valeurs (ordre décroissant). Dans mon exemple, il y a 6 états de ligne clairs (rangs 9 à 14) (2 lignes supplémentaires doivent provenir du décroissant, c'est-à-dire afficher/unexclure les rangs 8 et 7, mais ne doivent pas inclure de valeurs « nulles » dans un scénario s'il y a plus de valeurs nulles et moins -ve ou +ve valeurs dans col Step).
Étapes 1 et 2, je suis capable d'effectuer un script JSL mais j'ai des problèmes pour activer 2 lignes supplémentaires.
J'ai essayé d'utiliser la fonction de décalage et de créer également des colonnes factices pour les activer dans l'ordre inverse, mais j'ai du mal à désélectionner des lignes supplémentaires.
.
Merci!
Merci pour votre réponse rapide... ça marche !
CG, j'ai joint une table de données, nommée PerChangeExample pour émuler votre exemple.
Essayez ce 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.