如何選擇數據表中的所有彩色單元格給了我一個數據表,其中某些行被塗成紅色以指示問題,但我不知道問題背後的邏輯。 如何在 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"],{}));