Mise en forme conditionnelle des cellules d'un datable avec If-then opérant sur plusieurs cellules de colonnes de jeux de donnéesBonjour les experts,
Je vais faire de mon mieux pour expliquer le problème que je rencontre.
1. J'ai 2 ensembles de données : l'un contenant les valeurs médianes du lot A dans différentes colonnes et l'autre contenant l'écart type de certains paramètres.
Tableau des données médianes

Tableau de données d'écart type :

2. Je souhaite comparer la valeur de la colonne risk_lot (5) à [baseline(4) + 2*std dev datatable:Lot(2)] et [baseline(4) - 2*std dev datatable:Lot(2)]. Si elle se situe dans cette plage, c'est-à-dire 0<5<8 pour cet exemple, je souhaite colorer la cellule risk_lot en vert et si elle se situe en dehors de la fenêtre, alors en rouge.
3. J'ai essayé avec le code ci-dessous mais il me donne une erreur « Impossible de convertir l'argument en nombre », ce qui me fait penser que ma syntaxe est en quelque sorte foirée.
4. J'ai également regardé quelques exemples sur le forum, mais cela ne fonctionne pas.
5. J'ai jmp12.
S'il vous plaît, aidez-moi. Merci.
dt_summary<<SELECT where="">formula(column(3)+2*column(dt_std_subset,3)))|(column(i)Mass Customization</SELECT>
Re : Mise en forme conditionnelle des cellules dans un datable avec If-then opérant sur plusieurs cellules de colonne d'ensembles de donnéesLa seule façon que j'ai pu obtenir une copie d'une table de données qui a de la couleur dans les cellules à déplacer dans un journal, est d'abord de mettre la table de données dans une fenêtre par elle-même, puis d'ajouter la fenêtre temporaire avec le tableau de données dedans, là où il doit être dans le journal final.Voir l'exemple de script ci-dessous

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
:age << color cells( "red", [2, 4, 6, 8] );
temp = New Window( "temp", <<JOURNAL></JOURNAL>
Re : Mise en forme conditionnelle des cellules dans un datable avec If-then opérant sur plusieurs cellules de colonne d'ensembles de donnéesMerci Jim. Cela fonctionne maintenant. Cependant, j'ai maintenant rencontré un autre problème. Je veux que ce tableau de données à code couleur fasse partie d'un rapport/journal final avec d'autres graphiques sous ce tableau. Quelque chose comme ci-dessous. Lorsque j'essaie d'utiliser la boîte de tableau de données pour ajouter ce tableau au rapport, le codage couleur disparaît et il n'y a pas de lignes de bordure/grille. Pouvez-vous s'il vous plaît m'aider avec le code pour réaliser la mise en page suivante?
[ Fenêtre d'analyse finale]
[Tableau récapitulatif à code couleur avec quadrillage.]
(titre = colonne 1)
[Graphique en boîte de la colonne 1 dans le tableau récapitulatif][Graphique des quantiles normaux de la colonne 1 dans le tableau récapitulatif]
(titre = colonne 2)
[Graphique en boîte de la colonne 2 du tableau récapitulatif][Graphique des quantiles normaux de la colonne 2 du tableau récapitulatif]
..
.. et ainsi de suite.
Merci
Re : Mise en forme conditionnelle des cellules dans un datable avec If-then opérant sur plusieurs cellules de colonne d'ensembles de donnéesMerci Jim. Je m'excuse de ne pas avoir été très clair dans ma demande au début. Je suppose que c'est l'erreur que j'obtenais lorsque j'essayais la boucle for. C'est pourquoi j'ai pensé qu'il pourrait y avoir un moyen spécial de pointer vers différentes colonnes d'ensemble de données à l'aide de leurs poignées, mais je n'ai pas pensé à ce qui se passerait vers la fin de la boucle.Je vais essayer cela aujourd'hui et je vous ferai savoir si je rencontre des problèmes.
Re : Mise en forme conditionnelle des cellules dans un datable avec If-then opérant sur plusieurs cellules de colonne d'ensembles de donnéesJe dois admettre que je suis confus, je vais donc revenir à votre entrée d'origine et recommencer.Voici une conversion de votre code de coloration cellulaire.Il a 3 changements.
- J'ai changé le nCol+1 en N Cols(dt_med_subset).Votre code échouera avec le calcul d'origine, car lorsque la valeur de "i" atteint nCol+1, votre code recherchera une colonne au-delà de la fin de la table de données et ne pourra pas la trouver.
- J'ai ajouté des références absolues aux tables de données std et med
- J'ai remplacé For Each Row par une boucle For() normale.Le code s'exécutera plus rapidement et fournira une référence plus précise
For( rowNum = 1, rowNum <= N Rows( dt_med_subset ), rowNum++,
For( i = 4, i < N Cols( dt_med_subset, i++,
If(
(Column( dt_med_subset, i )[rowNum] > Column( dt_med_subset, 3 )[rowNum] + 2
* Column( dt_std_subset, 3 )[rowNum]) | (Column( dt_med_subset, i )[rowNum]
< (Column( dt_med_subset, 3 )[rowNum] - 2 * Column( dt_std_subset, 3 )[rowNum]))
,
Column( dt_med_subset, i ) << color cells( "red", rowNum ),
Column( i ) << color cells( "green", rowNum )
)
)
)
);Re : Mise en forme conditionnelle des cellules dans un datable avec If-then opérant sur plusieurs cellules de colonne d'ensembles de donnéesMerci pour le code. Je vois que votre code fait référence aux colonnes de référence, de lot et de lot à risque par leurs noms. J'avais essayé d'utiliser nCOL parce que l'ensemble de données d'origine que j'ai a 40 colonnes comme le lot de risque et je veux éviter de référencer chacune d'elles par leur nom car elles ont des noms très longs.
Comment puis-je utiliser une boucle for sur toutes ces colonnes et coder en couleur les 40 cellules entières de la colonne avec la même logique que dans les 3 dernières lignes de votre code? Je suppose que ce que je demande, c'est comment coder en couleur les 40 colonnes entières sans utiliser de noms de colonnes explicites et utiliser à la place des poignées/références à ces colonnes. S'il vous plaît laissez-moi savoir s'il existe un moyen de le faire?
Merci
Re : Mise en forme conditionnelle des cellules dans un datable avec If-then opérant sur plusieurs cellules de colonne d'ensembles de donnéesVoici ma version de votre code.Je sépare les données médianes et Std Dev, mais je rejoins ensuite les données à l'aide de Update.
Names default to here(1);
dt_summary = New Table( "summary",
Add Rows( 4 ),
Set Header Height( 50 ),
New Column( "Analysis Columns",
Character,
"Nominal",
Set Values( {"Test-1", "Test-1", "Test-2", "Test-2"} )
),
New Column( "Statistics",
Character,
"Nominal",
Set Values( {"Median", "Std Dev", "Median", "Std Dev"} )
),
New Column( "baseline",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 3, 4] )
),
New Column( "risk_lot",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [4, 7, 19, 9] )
)
);
dt_summary << select where( :Statistics == "Std Dev" );
dt_std_subset = dt_summary << subset(
output table( "Std summary" ),
selected rows( 1 ),
selected columns( 0 )
);
dt_summary<<INVERT row="" selection=""></INVERT>
Re : Mise en forme conditionnelle des cellules dans un datable avec If-then opérant sur plusieurs cellules de colonne d'ensembles de donnéesBonjour Jim,
Merci de m'avoir aidé avec ça. Voici donc à quoi ressemble le tableau récapitulatif. J'avais essayé votre solution précédente dans l'un des messages, mais je n'ai pas réussi à la faire fonctionner, alors j'ai pensé à subdiviser cette table en std dev et median table. J'ai pensé qu'il serait peut-être plus facile de modifier les cellules de la table de sous-ensemble médian en référençant les valeurs de colonne de la table de développement std et en faisant quelques calculs simples avec, mais je suis resté bloqué 
S'il existe un moyen plus simple, merci de me le faire savoir. Le but ultime est d'avoir juste un tableau médian (sous-ensemble du tableau récapitulatif) avec les valeurs de cellule codées par couleur en fonction de la logique si-alors.
Merci encore.

Re : Mise en forme conditionnelle des cellules dans un datable avec If-then opérant sur plusieurs cellules de colonne d'ensembles de données- Pourriez-vous montrer à quoi ressemble la table de données dt_summary.Le code que vous montrez qui crée les tables de données médiane et STD ne semble pas être complet dans sa capacité à créer les 2 tables comme vous le montrez ?
- Les tableaux de données Médiane et STD sont-ils complets dans le nombre de colonnes qu'ils auront ?
- Y a-t-il une raison pour laquelle vous ne vous contentez pas de joindre la table de données médiane et STD dans une seule table, ce qui rend la coloration conditionnelle des cellules un processus plus simple ?