<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonjour,
J'ai une colonne ("BIN") avec un tas de valeurs de caractères différentes et chaque ligne de l'ensemble de données fait référence à une unité unique qui a été testée. Sans avoir à transformer / résumer l'ensemble de données, j'aimerais créer une formule de colonne qui invite l'utilisateur avec une boîte de dialogue ListBox avec un ensemble de toutes les valeurs uniques dans la colonne "BIN". Après avoir sélectionné les valeurs souhaitées dans le contrôle ListBox, les unités ayant une valeur dans la colonne "BIN" auront la valeur 1 définie pour la colonne générée ("BIN_DISPOSITION"), et les colonnes dont les unités ne possédant pas de "BIN" "valeur qui correspond à la sélection ListBox aura une valeur 0 définie sur la colonne générée (" BIN_DISPOSITION ").
Exemple:
Si l'utilisateur exécute la colonne de formule et sélectionne "BIN2" et "BIN3", la sortie suivante est souhaitée.
Unité#
| POUBELLE | BIN_DISPOSITION (généré par la formule de colonne) |
|---|
Unité 1 | BIN1 | 0 |
| Unité 2 | BIN2 | 1 |
| Unité 3 | BIN2 | 1 |
| Unité 4 | BIN1 | 0 |
| Unité 5 | BIN3 | 1 |
Scénario:
bin_values_all = {} ;
bin_values_all_sorted = {} ;
bin_values_selected = {} ;
Si ( Rangée () == 1 ,
Pour chaque rangée ( Si ( ! Contient ( bin_values_all , : POUBELLE [ Rangée ()]) ,
Insérer dans ( bin_values_all , : POUBELLE [ Rangée ()])
) ;
bin_values_all_sorted = Trier par ordre croissant ( bin_values_all ) ;
Nouvelle fenetre ( "Sélection de la valeur BIN" , Modal,
Contour Box ( "Sélection de la valeur BIN" ,
kg = Zone de liste (
bin_values_all_sorted
) ,
Boîte à boutons ( "D'ACCORD" ,
bin_values_selected = kg << GetSélectionné
) ;
Si ( Contient ( bin_values_selected , : POUBELLE ) ,
1 ,
0
) ;
Je devais ajouter le conditionnel If (Row () == 1 ...) pour que la génération de dialogues et de listes ne s'exécute pas plus d'une fois, mais il semble que mes déclarations de variable supérieures soient réinitialisées à chaque fois, ce qui n'est pas ce que je veux.
Je n'étais pas tout à fait sûr s'il y avait une manière intégrée de faire ceci ou pas.
Vous vous demandez si quelqu'un a des idées.
Merci,
JP
J'ai compris comment faire fonctionner ça.
Au lieu d'initialiser les listes avant la première instruction conditionnelle, je les ai mises dans le cas Row () == 1 et les ai converties en variables globales en utilisant le préfixe '::'.
Si ( Rangée () == 1 ,
:: bin_values_all = {} ;
:: bin_values_all_sorted = {} ;
:: bin_values_selected = {} ;
Pour chaque rangée ( Si ( ! Contient ( bin_values_all , : POUBELLE [ Rangée ()]) ,
Insérer dans ( bin_values_all , : POUBELLE [ Rangée ()])
) ;
bin_values_all_sorted = Trier par ordre croissant ( bin_values_all ) ;
Nouvelle fenetre ( "Sélection de la valeur BIN" , Modal,
Contour Box ( "Sélection de la valeur BIN" ,
kg = Zone de liste (
bin_values_all_sorted
) ,
Boîte à boutons ( "D'ACCORD" ,
bin_values_selected = kg << GetSélectionné
) ;
Si ( Contient ( bin_values_selected , : POUBELLE ) ,
1 ,
0
) ;