<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola,
Tengo una columna ("BIN") con un montón de valores de caracteres diferentes y cada fila en el conjunto de datos se refiere a una unidad única que se probó. Sin tener que transformar / resumir el conjunto de datos, me gustaría crear una fórmula de columna que solicite al usuario un cuadro de diálogo ListBox con un conjunto de todos los valores únicos dentro de la columna "BIN". Después de seleccionar los valores deseados en el ListBox, las unidades que tienen un valor dentro de la columna "BIN" tendrán un valor de 1 establecido para la columna generada ("BIN_DISPOSITION"), y las columnas que las unidades que no tienen un "BIN "el valor que coincida con la selección de ListBox tendrá un valor de 0 establecido en la columna generada (" BIN_DISPOSITION ").
Ejemplo:
En el caso de que el usuario ejecute la columna de fórmula y seleccione "BIN2" y "BIN3", se desea la siguiente salida.
Unidad#
| COMPARTIMIENTO | BIN_DISPOSITION (generado por la fórmula de columna) |
|---|
Unidad 1 | BIN1 | 0 |
| Unidad 2 | BIN2 | 1 |
| Unidad 3 | BIN2 | 1 |
| Unidad 4 | BIN1 | 0 |
| Unidad 5 | BIN3 | 1 |
Guión:
bin_values_all = {} ;
bin_values_all_sorted = {} ;
bin_values_selected = {} ;
Si ( Fila () == 1 ,
Por cada fila ( Si ( ! Contiene ( bin_values_all , : COMPARTIMIENTO El Fila ()]) ,
Insertar en ( bin_values_all , : COMPARTIMIENTO El Fila ()])
) ;
bin_values_all_sorted = Orden ascendente ( bin_values_all ) ;
Nueva ventana ( "Selección de valor BIN" Modal
Cuadro de esquema ( "Selección de valor BIN" ,
libra = Cuadro de lista (
bin_values_all_sorted
) ,
Caja de botones ( "DE ACUERDO" ,
bin_values_selected = libra << GetSelected
) ;
Si ( Contiene ( bin_values_selected , : COMPARTIMIENTO ) ,
1 ,
0
) ;
Tuve que agregar el condicional If (Fila () == 1 ...) para que el diálogo y la generación de listas no se ejecutaran más de una vez, pero parece que las declaraciones de mi variable anterior se reiniciarían cada vez, lo que no es lo que quiero.
No estaba muy seguro de si había una forma integrada de hacer esto o no.
Preguntándome si alguien tiene alguna idea.
Gracias,
JP
Me di cuenta de cómo hacer que esto funcione.
En lugar de inicializar las listas antes de la primera declaración condicional, las puse en el caso Fila () == 1 y las convertí en variables globales utilizando el prefijo '::'.
Si ( Fila () == 1 ,
:: bin_values_all = {} ;
:: bin_values_all_sorted = {} ;
:: bin_values_selected = {} ;
Por cada fila ( Si ( ! Contiene ( bin_values_all , : COMPARTIMIENTO El Fila ()]) ,
Insertar en ( bin_values_all , : COMPARTIMIENTO El Fila ()])
) ;
bin_values_all_sorted = Orden ascendente ( bin_values_all ) ;
Nueva ventana ( "Selección de valor BIN" Modal
Cuadro de esquema ( "Selección de valor BIN" ,
libra = Cuadro de lista (
bin_values_all_sorted
) ,
Caja de botones ( "DE ACUERDO" ,
bin_values_selected = libra << GetSelected
) ;
Si ( Contiene ( bin_values_selected , : COMPARTIMIENTO ) ,
1 ,
0
) ;