Vous travaillez avec des lignes exclues ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut tout le monde,
J'ai deux colonnes.Dans la première colonne (Site), il y a le numéro 1 ou 2 à côté.Dans la deuxième colonne se trouvent quelques valeurs numériques.
J'ai créé une fonction qui calcule le rang et le centile.Tout d’abord, la fonction calcule dans une nouvelle colonne le rang et le centile.Ensuite, la fonction sélectionne toutes les lignes qui ont la valeur 1 dans le site 1 et les compte.Ensuite, il sélectionne et exclut toutes les lignes avec la valeur 2 dans la colonne du site, puis calcule le classement et le centile dans une autre colonne.Tout cela fonctionne.
Le problème survient lorsque je souhaite calculer le classement et le centile après avoir sélectionné et exclu les lignes avec la valeur 2 dans la colonne Site.Il ne renvoie aucune erreur, mais il n'y a aucune valeur dans la colonne.Je suppose que cela a à voir avec l'expression Exclud() dans ma formule.Si je supprime l'instruction if de F3 pour qu'elle soit exactement comme F, j'obtiens les mêmes valeurs que la colonne à côté, mais si je garde F3 tel qu'il est, aucune valeur !
Qu'est-ce que je rate?Désolé si c'est très évident...
rpFonction = Fonction ( { rangée , test } ,
//ligne --> combien de lignes (périphériques) y a-t-il dans la table de données ?
//test --? pour quel test calculons-nous le RP ?
Tableau de données actuel ( dtRésumé ) ;
col = Colonne ( test ) ;
nouveauCol = "RP" || test ;
F = Expr d'évaluation ( 100 * ( Rang du colonel ( col ) / Expr ( rangée ) )) ;
dtRésumé << Nouvelle colonne ( nouveauCol , Numérique , Formule ( Nom Expr ( F ) ) ) ;
col = Colonne ( nouveauCol ) ;
col << supprimer la formule ;
dtRésumé << Sélectionnez où ( : Site == 1 ) ;
ligne1 = nrows ( dtRésumé << obtenir les lignes sélectionnées ()) ;
dtRésumé << Sélectionnez où ( : Site == 2 ) ;
rangée2 = nrows ( dtRésumé << obtenir les lignes sélectionnées ()) ;
dtRésumé << Sélectionnez où ( : Site == 2 ) ;
dtRésumé << exclure ;
nouveauCol = "RP" || test || " Site 1" ;
F1 = Expr d'évaluation ( 100 * ( Rang du colonel ( si ( exclu () , . , col ) ) / Expr ( ligne1 ) )) ;
dtRésumé << Nouvelle colonne ( nouveauCol , Numérique , Formule ( Nom Expr ( F1 ) ) ) ;
col = Colonne ( nouveauCol ) ;
col << supprimer la formule ;
dtRésumé << sélectionner où ( : Site == 2 ) ;
dtRésumé << désexclure ;
dtRésumé << Sélectionnez où ( : Site == 1 ) ;
dtRésumé << exclure ;
nouveauCol = "RP" || test || "Site 2" ;
F2 = Expr d'évaluation ( 100 * ( Rang du colonel ( si ( exclu () , . , col ) ) / Expr ( rangée2 ) )) ;
dtRésumé << Nouvelle colonne ( nouveauCol , Numérique , Formule ( Nom Expr ( F2 ) ) ) ;
col = Colonne ( nouveauCol ) ;
col << supprimer la formule ;
dtRésumé << sélectionner où ( : Site == 1 ) ;
dtRésumé << désexclure ;
) ;
Re : Travailler avec des lignes exclues ?Salut MS,
Merci de votre retour.Je m'en suis rendu compte après avoir parcouru tous les trucs d'exclusion.Au départ, je pensais que je devais exclure des lignes, c'est pourquoi je l'ai choisi.J'aime bien plus la simplicité de votre code, merci !
Re : Travailler avec des lignes exclues ?Ne serait-il pas plus simple de cibler Site directement dans l'instruction If et d'éviter d'exclure complètement des lignes ? Par exemple:
rpFonction = Fonction ({ test } ,
F = Expr d'évaluation ( 100 * ( Rang du colonel ( Expr ( Colonne ( test ))) / Numéro de colonne ( : Site ))) ;
dtRésumé << Nouvelle colonne ( "RP" || test , Numérique , Formule ( Nom Expr ( F ))) ;
F = Expr d'évaluation ( 100 * ( Rang du colonel ( Si ( : Site != 1 , . , Expr ( Colonne ( test )))) / Col Somme ( : Site == 1 ))) ;
dtRésumé << Nouvelle colonne ( "RP" || test || " Site 1" , Numérique , Formule ( Nom Expr ( F ))) ;
F = Expr d'évaluation ( 100 * ( Rang du colonel ( Si ( : Site != 2 , . , Expr ( Colonne ( test )))) / Col Somme ( : Site == 2 ))) ;
dtRésumé << Nouvelle colonne ( "RP" || test || "Site 2" , Numérique , Formule ( Nom Expr ( F ))) ;
) ;
Re : Travailler avec des lignes exclues ?Merci beaucoup Jim.Ça fonctionne!Je n'ai même pas pensé à regarder ça.J'étais tellement obsédé par l'exclusion des lignes car c'était nouveau pour moi et je n'ai pas regardé l'évidence !Merci encore.
Re : Travailler avec des lignes exclues ?Nathalie,
Je pense l'avoir trouvé.
La deuxième fois que vous attribuez "Col=Newcol", je ne pense pas que vous souhaitiez l'attribuer à la nouvelle colonne.En fait, vous voulez garder col pointant vers la colonne Rp Irgl.Pas à la nouvelle colonne appelée Rp Irgl pour le Site 1. Vous utilisez la valeur de col dans votre formule, et vous venez de la réaffecter au Rp Irgl pour le Site 1.
je viens de changer le
col=nouveaucol;
col<
à
xcol=nouveaucol;
xcol<
La troisième utilisation de col=newcol; et col<Re : Travailler avec des lignes exclues ?
Salut natalie_
vous pourriez peut-être utiliser un wait() entre les sélections.
sinon, vous gagnerez du temps en utilisant des sous-ensembles du tableau d'origine et en mettant à jour le tableau d'origine avec les calculs dont vous avez besoin. assurez-vous simplement de ne pas remplacer les données de la table d'origine.
Ron
Re : Travailler avec des lignes exclues ?Salut Jim,
Merci de votre retour.Malheureusement, le code ne fonctionne toujours pas
J'ai remarqué que dans le code que vous m'avez envoyé, vous n'avez pas ajouté d'exclusion (1) sous la sélection Site 2.Je l'ai ajouté, mais malheureusement cela n'a pas fonctionné.J'ai joint un écran pour vous montrer à quoi ressemble mon tableau de données.Les deux premières colonnes rp correspondent à ce que je veux, mais la dernière n'a aucune valeur.
rpFonction = Fonction ( { rangée , test } ,
//ligne --> combien de lignes (périphériques) y a-t-il dans la table de données ?
//test --? pour quel test calculons-nous le RP ?
Tableau de données actuel ( dtRésumé ) ;
col = Colonne ( test ) ;
nouveauCol = "RP" || test ;
F = Expr d'évaluation ( 100 * ( Rang du colonel ( col ) / Expr ( rangée ) )) ;
dtRésumé << Nouvelle colonne ( nouveauCol , Numérique , Formule ( Nom Expr ( F ) ) ) ;
col = Colonne ( nouveauCol ) ;
col << supprimer la formule ;
dtRésumé << Sélectionnez où ( : Site == 1 ) ;
ligne1 = nrows ( dtRésumé << obtenir les lignes sélectionnées ()) ;
dtRésumé << Sélectionnez où ( : Site == 2 ) ;
rangée2 = nrows ( dtRésumé << obtenir les lignes sélectionnées ()) ;
dtRésumé << Sélectionnez où ( : Site == 2 ) ;
dtRésumé << exclure ( 1 ) ;
nouveauCol = "RP" || test || " Site 1" ;
F1 = Expr d'évaluation ( 100 * ( Rang du colonel ( si ( exclu () , . , col ) )) / Expr ( ligne1 ) ) ;
dtRésumé << Nouvelle colonne ( nouveauCol , Numérique , Formule ( Nom Expr ( F1 ) ) ) ;
col = Colonne ( nouveauCol ) ;
col << supprimer la formule ;
dtRésumé << sélectionner où ( : Site == 2 ) ;
dtRésumé << exclure ( 0 ) ;
dtRésumé << Sélectionnez où ( : Site == 1 ) ;
dtRésumé << exclure ( 1 ) ;
nouveauCol = "RP" || test || "Site 2" ;
F2 = Expr d'évaluation ( 100 * ( Rang du colonel ( si ( exclu () , . , col ) )) / Expr ( rangée2 ) ) ;
dtRésumé << Nouvelle colonne ( nouveauCol , Numérique , Formule ( Nom Expr ( F2 ) ) ) ;
col = Colonne ( nouveauCol ) ;
col << supprimer la formule ;
dtRésumé << sélectionner où ( : Site == 1 ) ;
dtRésumé << exclure ( 1 ) ;
) ;

Re : Travailler avec des lignes exclues ?Nathalie,
J'ai pris votre code et y ai apporté une très légère modification ; J'ai changé les options de désexclusion et d'exclusion en exclusion (0 | 1).Cela garantit l’action correcte du message.L'exclusion et la désexclusion sont en fait des commutateurs, pas des messages absolus.
Le code semble fonctionner :
rpFonction = Fonction ( {rangée , test} ,
//ligne --> combien de lignes (périphériques) y a-t-il dans la table de données ?
//test --? pour quel test calculons-nous le RP ?
Tableau de données actuel ( dtRésumé ) ;
col = Colonne ( test ) ;
nouveauCol = "RP" || test ;
F = Expr d'évaluation ( 100 * ( Rang du colonel ( col ) / Expr (rangée) )) ;
dtRésumé << Nouvelle colonne ( nouveauCol , Numérique , Formule( Nom Expr ( F ) ) ) ;
col = Colonne (nouveauCol) ;
col << supprimer la formule ;
dtRésumé << Sélectionnez où ( : Site == 1 ) ;
ligne1 = nrows (dtRésumé < ()) ;
dtRésumé << Sélectionnez où ( : Site == 2 ) ;
rangée2 = nrows (dtRésumé < ()) ;
dtRésumé << Sélectionnez où ( : Site == 2 ) ;
dtRésumé << exclure;
nouveauCol = "RP" || test || " Site 1" ;
F1 = Expr d'évaluation ( 100 * ( Rang du colonel ( si ( exclu () , . , col) ) / Expr (ligne 1) )) ;
dtRésumé << Nouvelle colonne ( nouveauCol , Numérique , Formule( Nom Expr ( F1 ) ) ) ;
col = Colonne (nouveau Col) ;
col << supprimer la formule ;
dtRésumé << sélectionner où ( : Site == 2 ) ;
dtRésumé << exclure ( 0 ) ;
dtRésumé << Sélectionnez où ( : Site == 1 ) ;
dtRésumé << exclure ( 1 ) ;
nouveauCol = "RP" || test || "Site 2" ;
F2 = Expr d'évaluation ( 100 * ( Rang du colonel ( si ( exclu () , . , col) ) / Expr (rangée 2) )) ;
dtRésumé << Nouvelle colonne ( nouveauCol , Numérique , Formule( Nom Expr ( F2 ) ) ) ;
col = Colonne (nouveau Col) ;
col << supprimer la formule ;
dtRésumé << sélectionner où ( : Site == 1 ) ;
dtRésumé << exclure ( 0 ) ;
) ;

Re : Travailler avec des lignes exclues ?Je ne suis pas sûr que cela soit utile, mais dans les anciennes versions du programme, les formules de colonnes n'étaient pas sensibles aux exclusions.
sinon, il est préférable de faire les calculs basés sur << obtenir les lignes où () plutôt que sur la sélection.
Ron
Re : Travailler avec des lignes exclues ?EDIT : F3 dans mon explication devrait vraiment dire F2.