Comment transférer les fonctions Excel COUNTIF et MATCH dans JMPJ'ai un problème dans le script du code JSL pour deux fonctions (voir capture d'écran) que j'ai actuellement dans Excel mais que je souhaite transférer dans JMP. Les données se trouvent dans le fichier joint JMP_Test_Average2.xlsx et les fonctions que je souhaite transférer vers JMP sont les suivantes :
- colonne VS a un NB.SI fonction; =NB.SI(C3:N3,"-1")
- Je veux connaître le nombre d'instances -1 apparaît dans chaque ligne (par exemple, dans la ligne 3, le nombre d'instances de -1 est 2). Colonne m(AB) est ignoré dans la fonction mais il est important car il fait partie de la séquence de données.
- colonne PD a un CORRESPONDRE fonction; =(EQUIV("-1",C3:N3,0))+1
- Je veux savoir où la première instance de -1 apparaît dans chaque ligne (par exemple, dans la ligne 3, le premier -1 apparaît dans colonne m(LM) ou la colonne 12 lors de l'examen colonnes m(AB) pour m(MN) ). Colonne m(AB) est ignoré dans les fonctions mais il est important car il fait partie de la séquence de données.
J'aimerais savoir comment scripter ces fonctions en JSL afin que je puisse mettre à jour ma table JMP et ne pas avoir à effectuer les calculs dans Excel, puis à importer les résultats dans ma table JMP.
Toute aide serait très appréciée.
Merci.
Mike
Data as found in file JMP_Test_Average2.xlsxData as found in file JMP_Test_Average2.xlsxDonnées trouvées dans le fichier JMP_Test_Average2.xlsx
Re : Comment transférer les fonctions Excel COUNTIF et MATCH dans JMPdt <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> new Column</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token string">"VS"</SPAN><SPAN class="token punctuation">,</SPAN> formula<SPAN class="token punctuation">(</SPAN>nrows<SPAN class="token punctuation">(</SPAN><SPAN class="token function">Loc</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token function">Evallist</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">{</SPAN><SPAN class="token punctuation">:</SPAN>AB<SPAN class="token punctuation">,</SPAN> <SPAN class="token punctuation">:</SPAN>BC<SPAN class="token punctuation">,</SPAN> <SPAN class="token punctuation">:</SPAN>CD<SPAN class="token punctuation">,</SPAN> <SPAN class="token punctuation">:</SPAN>DE<SPAN class="token punctuation">,</SPAN> <SPAN class="token punctuation">:</SPAN>EF<SPAN class="token punctuation">}</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token operator">-</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Comment ce code doit-il être modifié pour compter le -1 de la ligne et les 2 lignes du dessus (3 lignes au total) ?
Merci!
Re : Comment transférer les fonctions Excel COUNTIF et MATCH dans JMPComment la table de noms de colonnes {:AB, :BC, :CD, :DE, :EF} de chaque colonne du code peut-elle être générée automatiquement par le code ?
{:AB, :BC, :CD, :DE, :EF}
Merci!
J'ai essayé le code suivant pour avoir le même effet, mais il ne se génère toujours pas automatiquement.
Evallist({Comme colonne(1),Comme colonne(2),Comme colonne(3),Comme colonne(4),Comme colonne(5)})
Re : Comment transférer les fonctions Excel COUNTIF et MATCH dans JMP//this gives you a vector of items that are -1
vector_of_neg1 = loc(Aslist(:AB[row()-3::row()]`), -1);
//then you just have to select the last one
n = nitems(vector_of_neg1);
if(n,
vector_of_neg1[n]
, //else 0
0
);
Ou vous pouvez utiliser l'argument start pour regarder de l'arrière.
Contains( :AB[Index( Row() - 3, Row() )] , -1, -1 )
Re : Comment transférer les fonctions Excel COUNTIF et MATCH dans JMPMerci Jim!
x=5-Contains(Eval List(:ab[Index(Row(),Row()-3)]),-1);
Si(x==5,0,x);Re : Comment transférer les fonctions Excel COUNTIF et MATCH dans JMPC'est peut-être la formule que vous recherchez
x = 5 - Contains( Eval List( :ab[Index( Row(), Row() - 3 )] ), -1 );
If( x == 5, x = 0 );
Re : Comment transférer les fonctions Excel COUNTIF et MATCH dans JMPJ'ai essayé d'écrire un code comme celui-ci, mais cela n'a pas fonctionné.

Re : Comment transférer les fonctions Excel COUNTIF et MATCH dans JMPsalut ! Je meurs d'envie de savoir :
Si la colonne "AB" contient plus d'un "-1", comment déterminer le nombre de lignes comprises dans la plage du dernier "-1" de cette plage ?
Merci!

Re : Comment transférer les fonctions Excel COUNTIF et MATCH dans JMPIci, je trouve la réponse et résous mes propres problèmes. Merci !
Contient( Eval List( :BC[Index(Row()-3,Row())] ), -1 )Re : Comment transférer les fonctions Excel COUNTIF et MATCH dans JMPMerci pour votre aide également Jim, vous et Vince avez résolu mon problème.
Re : Comment transférer les fonctions Excel COUNTIF et MATCH dans JMPMerci pour votre aide, très appréciée.
Re : Comment transférer les fonctions Excel COUNTIF et MATCH dans JMPVoici les 2 formules que j'ai trouvées pour reproduire votre feuille de calcul
Pour YS
Sum(
:Name( "m(AB)" ) == -1,
:Name( "m(BC)" ) == -1,
:Name( "m(CD)" ) == -1,
:Name( "m(EF)" ) == -1,
:Name( "m(FG)" ) == -1,
:Name( "m(GH)" ) == -1,
:Name( "m(HI)" ) == -1,
:Name( "m(IJ)" ) == -1,
:Name( "m(JK)" ) == -1,
:Name( "m(KL)" ) == -1,
:Name( "m(LM)" ) == -1,
:Name( "m(MN)" ) == -1
)
Pour la PD
Contains(
Char( :Name( "m(AB)" ) ) || Char( :Name( "m(BC)" ) ) ||
Char( :Name( "m(CD)" ) ) || Char( :Name( "m(EF)" ) ) ||
Char( :Name( "m(FG)" ) ) || Char( :Name( "m(GH)" ) ) ||
Char( :Name( "m(HI)" ) ) || Char( :Name( "m(IJ)" ) ) ||
Char( :Name( "m(JK)" ) ) || Char( :Name( "m(KL)" ) ) ||
Char( :Name( "m(LM)" ) ) || Char( :Name( "m(MN)" ) ),
"-1"
)
Re : Comment transférer les fonctions Excel COUNTIF et MATCH dans JMPCela devrait vous donner une idée de base.
Names Default to here(1);
dt = new table("Test", add rows(10),
New Column("AB", formula(if(random uniform()<=.8, 1, -1))),
New Column("BC", formula(if(random uniform()<=.8, 1, -1))),
New Column("CD", formula(if(random uniform()<=.8, 1, -1))),
New Column("DE", formula(if(random uniform()<=.8, 1, -1))),
New Column("EF", formula(if(random uniform()<=.8, 1, -1))),
);
cols = dt << Get Column Reference(dt << Get Column Names);
dt << new Column("VS", formula(nrows(Loc(Evallist({:AB, :BC, :CD, :DE, :EF}), -1))));
dt << New Column("PD", formula(Contains(Evallist({:AB, :BC, :CD, :DE, :EF}), -1)));