Utilisation de valeurs de ligne spécifiques à utiliser dans une formule avec JSLJ'aimerais faire quelque chose que j'ai appris il y a longtemps en VB, mais j'ai du mal avec le langage de script JMP. Je suis nouveau sur JMP.
Je voudrais exécuter une boucle For dans une formule mais utiliser un tableau de cellules.
Par exemple, je sais que je peux référencer une colonne comme suit : j = Colonne ("a");
Si je dis alors j[4] = 77 + 2; J'obtiendrai la valeur 79 dans la colonne "a", ligne 4.
Et si je voulais exécuter une boucle sur la colonne "a", par exemple For(i=1,i<=20,i++, QUELQUES FORMULES UTILISANT j[i]);
Dans la pièce jointe, je voudrais utiliser la ligne de la colonne B [1] avec les lignes 1 à 5 de la colonne C. Et puis, colonne-B Ligne [6] avec les Lignes 6 à 10 de la colonne-C. Mon objectif est d'utiliser la séquence dans la colonne A comme identifiant, donc chaque fois que la séquence a la valeur 1, je maintiens cette valeur pour 5 utilisations ultérieures de la formule où ce qui entre dans la colonne D dépend de l'arithmétique effectuée sur le contenu des colonnes B et C. (Par exemple Column-D=Column-B-Value + Column-C-Value.) Voir la pièce jointe pour voir dans une image ce que je veux dire.
Toute aide serait formidable et très appréciée.
Re : Utilisation de valeurs de ligne spécifiques à utiliser dans une formule avec JSLEn fin de compte, il m'a fallu un certain temps pour comprendre le fonctionnement des scripts JMP. Les pièces jointes montrent ce que j'ai fait, ce qui fonctionne pour moi. (L'exemple s'écarte de l'exemple simple que j'ai utilisé pour démarrer cette discussion.)
Si quelqu'un a des conseils sur la façon d'aborder ce genre de problème différemment, veuillez commenter. Ayant utilisé des boucles for et des conditions if dans la programmation VB de base pendant tant d'années, et étant nouveau dans JMP, cela signifie que j'ai peut-être besoin de conseils pour mieux comprendre comment aborder les scripts JMP.
Re : Utilisation de valeurs de ligne spécifiques à utiliser dans une formule avec JSLMerci Jim!
Re : Utilisation de valeurs de ligne spécifiques à utiliser dans une formule avec JSLY a-t-il une question?
Re : Utilisation de valeurs de ligne spécifiques à utiliser dans une formule avec JSLJ'utilise ce script pour colorer en jaune une cellule si la moyenne des 30 derniers jours est supérieure à +1 sigma par rapport à la cible
Pour ( je = 1 , je <= N rangée ( dt ) , je ++,
Si ( Colonne ( dt , "En moyenne 30 jours" )[ je ] > (( Colonne ( dt , "Cible" )[ je ]) + Colonne ( dt , "Std" )[ je ] ) ,
Colonne ( dt , "En moyenne 30 jours" ) << Cellules de couleur ( 9 , { je } )
)
) ;
Re : Utilisation de valeurs de ligne spécifiques à utiliser dans une formule avec JSLLa formule suivante fonctionne pour votre exemple ci-joint
targetrow = (Row() - :Name( "Column-A" )) + 1;
:Name( "Column-B" )[targetrow] + :Name( "Column-C" );
N'oubliez pas que la formule bouclera toujours sur toutes les lignes et que la fonction Row () vous donnera toujours la ligne sur laquelle vous travaillez actuellement. Lors de l'utilisation d'une formule dans JMP, il est nécessaire d'examiner quels résultats sont nécessaires lors de l'examen d'une ligne donnée. C'est un paradigme différent de VB
Voici une autre version, faisant la boucle For que vous recherchez
If( :Name( "Column-A" ) == 5,
For( i = Row() - 4, i <= Row(), i++,
:Name( "Column-D" )[i] = :Name( "Column-B" )[Row() - 4] + :Name( "Column-C" )[i]
)
);
// The last value calculated will be the value for the current row,
// so it needs to be handled as a special case
:Name( "Column-B" )[Row() - 4] + :Name( "Column-C" )[Row()];
Je suppose que techniquement, vous pourriez vous rapprocher d'un monde VB, si l'on contournait tout le traitement pour toutes les lignes, jusqu'à ce que la dernière ligne soit détectée, puis vous pourriez revenir en arrière et parcourir toutes les lignes sous le contrôle du programme .... .cela semble être beaucoup de travail
dt=current data table();
If(Row()==N Rows(dt),
<DO whatever="" processing="" you="" want="">
);
<PROCESS for="" the="" current=""></PROCESS></DO>