¿Cómo selecciono todas las celdas coloreadas en una tabla de datos?Me proporcionaron una tabla de datos donde ciertas filas están coloreadas en rojo para indicar problemas, pero no conozco la lógica detrás de los problemas. ¿Cómo hago para seleccionar todas las filas coloreadas en rojo en JSL?
Re: ¿Cómo selecciono todas las celdas coloreadas en una tabla de datos?dt = Open("C:/temp/Cars_modified.jmp");
//______________________________________________________________________________________
//A function to find the colored cells in a specific column.
//-15341335 = reddish color, 73 = yellowish, 36=greenish
get_colored_cells = Function( {col}, {_s,i, xp, clr_aa=0 },
// If IsMissing(clr) then get all colors
_s = col << get script ;
for(i=1, i<=narg(_s) , i++,
xp = Arg(_s, i);
if(Head Name(xp) =="Color Cells",
//this only works if the color is an integer might need a for loop to change the
//key to the RGB value
clr_aa = Associative Array(Arg(xp,1));
clr_aa << set default value(0);
Break()
);
);
clr_aa
);
//_______________________________________________________________________________________
// Usage examples:
model_aa = get_colored_cells( Column("Model"));
dt<< select rows (model_aa[73]);Modifiqué el ejemplo anterior para seleccionar celdas amarillentas y funcionó cuando hay varios colores en la columna "Modelo". Cuando solo hay 1 color en la columna, no funciona. ¿Cómo puedo modificar el script para que se puedan seleccionar celdas coloreadas dentro de la columna Modelo cuando solo se usa 1 color en la columna?
Re: ¿Cómo selecciono todas las celdas coloreadas en una tabla de datos?Entonces desea utilizar el siguiente código (modificado de @gzmorgan0 código)
//get and table row with a specified color
_colorRows = dt << get rows where (Color Of( Row State( Row() ) ) != 0) ;
dt<<SELECT rows=""></SELECT>
Re: ¿Cómo selecciono todas las celdas coloreadas en una tabla de datos?En este caso las filas están coloreadas y no las celdas individuales.
Re: ¿Cómo selecciono todas las celdas coloreadas en una tabla de datos?Como dijo Jim, la coloración de las celdas puede estar relacionada con los colores de las filas o ser independiente de ellos.La única forma que conozco de llegar a los colores de celda para una columna específica es obtener el script de la columna y "desempaquetar" los argumentos de la expresión (script).
Si una columna contiene celdas coloreadas, tiene un argumento Color Cells( {... } ) donde la lista contiene una o más listas, el primer elemento de cada lista es el número de color y el segundo elemento de la lista es otra lista. una lista de celdas (filas) con ese color.El formato de lista de 2 elementos se llama par nombre-valor . El script adjunto no maneja el caso en el que el color de la celda no es un número entero.
Desearía que JMP hiciera de las celdas de color una propiedad de columna para que col << get Column Property("Cell Colors") devolviera la lista, sin buscar el argumento.
Jim podría tener una solución más sencilla. Adjunto la tabla Coches_modificados.jmp y un script que lo utiliza.El script hace referencia a la tabla desde c:/temp, así que modifique el script para que tenga la ruta de tabla correcta.
Re: ¿Cómo selecciono todas las celdas coloreadas en una tabla de datos?No existe una forma directa de conseguirlo.En parte porque el problema es si las filas están coloreadas o las celdas están coloreadas.Para determinar esto, si miras en la columna que tiene el número de fila, es decir, mira en la columna Estado de fila, y si hay un marcador en las filas donde están coloreadas las filas, y es del mismo color. como la fila, luego las filas se colorean.Si en una fila coloreada no hay ningún marcador de color en la columna de estado de la fila, cada celda está coloreada.
¿Cuál de estos es tu caso?
Re: ¿Cómo selecciono todas las celdas coloreadas en una tabla de datos?Buen truco: ¡a través del script de columna! 
:folded_hands: Indexación de expresiones: el acceso de lectura y escritura podría facilitar la
if(Head Name(xp) =="Color Cells",
parte ...
Hasta que esté disponible, se puede convertir la expresión en una lista y usar la indexación de listas:
dt = Open("C:/temp/Cars_modified.jmp");
myScript = dt:Model << Get Script;
SubstituteInto(myScript, Expr(New Column()), {});
colorsettings = Associative Array(Try(myScript["Color Cells"],{}));