如何选择数据表中的所有彩色单元格给了我一个数据表,其中某些行被涂成红色以指示问题,但我不知道问题背后的逻辑。 如何在 JSL 中选择所有红色行?
回复:如何选择数据表中的所有彩色单元格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]);我修改了上面的示例以选择淡黄色单元格,并且当“模型”列中有多种颜色时它起作用。 当列中只有 1 种颜色时,它不起作用。 如何修改脚本,以便在模型列中仅使用 1 种颜色时可以选择模型列中的彩色单元格?
回复:如何选择数据表中的所有彩色单元格然后你想使用以下代码(修改自@gzmorgan0代码)
//get and table row with a specified color
_colorRows = dt << get rows where (Color Of( Row State( Row() ) ) != 0) ;
dt<<SELECT rows=""></SELECT>
回复:如何选择数据表中的所有彩色单元格在这种情况下,行是彩色的,而不是单个单元格。
回复:如何选择数据表中的所有彩色单元格正如吉姆所说,单元格颜色可以与行颜色相关或独立。我知道如何获取特定列的单元格颜色的唯一方法是获取列脚本并“解包”表达式(脚本)参数。
如果列包含彩色单元格,则它有一个参数 Color Cells( {... } ),其中列表包含一个或多个列表,每个列表中的第一项是颜色编号,列表中的第二项是另一个列表,具有该颜色的单元格(行)列表。2 项列表格式称为名称-值对。 附加的脚本不处理单元格颜色不是整数的情况。
我希望 JMP 将使颜色单元格成为列属性,以便 col << get Column Property("Cell Colors") 将返回列表,而无需搜索参数。
吉姆可能有一个更简单的解决方案。 附上表格Cars_modified.jmp以及使用它的脚本。该脚本从 c:/temp 引用该表,因此请修改该脚本以获得正确的表路径。
回复:如何选择数据表中的所有彩色单元格没有直接的方法可以得到这个。部分原因是问题在于,行是否着色,或者单元格是否着色。要确定这一点,如果您查看包含行号的列,即查看行状态列,并且在行着色的行中是否有标记,并且它的颜色相同作为行,则行被着色。如果在有颜色的行中,行状态列中没有彩色标记,则每个单元格都有颜色。
您属于以下哪种情况?
回复:如何选择数据表中的所有彩色单元格不错的技巧——通过列脚本!:)
:folded_hands: 表达式索引:读写访问可以促进
if(Head Name(xp) =="Color Cells",
部分 ...
直到它可用为止,可以将表达式转换为列表并使用列表索引:
dt = Open("C:/temp/Cars_modified.jmp");
myScript = dt:Model << Get Script;
SubstituteInto(myScript, Expr(New Column()), {});
colorsettings = Associative Array(Try(myScript["Color Cells"],{}));