Wie wähle ich alle farbigen Zellen in einer Datentabelle aus?Mir wurde eine Datentabelle gegeben, in der bestimmte Zeilen rot eingefärbt sind, um auf Probleme hinzuweisen, aber ich kenne die Logik hinter den Problemen nicht. Wie wähle ich in JSL alle rot gefärbten Zeilen aus?
Betreff: Wie wähle ich alle farbigen Zellen in einer Datentabelle aus?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]);Ich habe das obige Beispiel geändert, um gelbliche Zellen auszuwählen, und es hat funktioniert, wenn in der Spalte „Modell“ mehrere Farben vorhanden sind. Wenn die Spalte nur eine Farbe enthält, funktioniert es nicht. Wie kann ich das Skript so ändern, dass farbige Zellen in der Modellspalte ausgewählt werden können, wenn in der Spalte nur eine Farbe verwendet wird?
Betreff: Wie wähle ich alle farbigen Zellen in einer Datentabelle aus?Dann möchten Sie den folgenden Code verwenden (geändert von @gzmorgan0 Code)
//get and table row with a specified color
_colorRows = dt << get rows where (Color Of( Row State( Row() ) ) != 0) ;
dt<<SELECT rows=""></SELECT>
Betreff: Wie wähle ich alle farbigen Zellen in einer Datentabelle aus?In diesem Fall sind die Zeilen farbig und nicht einzelne Zellen.
Betreff: Wie wähle ich alle farbigen Zellen in einer Datentabelle aus?Wie Jim feststellte, kann die Zellfärbung mit den Zeilenfarben in Zusammenhang stehen oder von diesen unabhängig sein.Die einzige Möglichkeit, die ich kenne, um zu den Zellenfarben für eine bestimmte Spalte zu gelangen, besteht darin, das Spaltenskript abzurufen und die Ausdrucksargumente (Skriptargumente) zu „entpacken“.
Wenn eine Spalte farbige Zellen enthält, hat sie ein Argument Color Cells( {... } ), wobei die Liste eine oder mehrere Listen enthält, das erste Element in jeder Liste die Farbnummer ist und das zweite Element in der Liste eine andere Liste ist. eine Liste von Zellen (Zeilen) mit dieser Farbe.Das 2-Element-Listenformat heißt a Name-Wert-Paar . Das angehängte Skript behandelt nicht den Fall, dass die Zellenfarbe keine Ganzzahl ist.
Ich wünschte, JMP würde Color Cells zu einer Spalteneigenschaft machen, sodass col << get Column Property("Cell Colors") die Liste zurückgeben würde, ohne nach dem Argument zu suchen.
Jim hätte vielleicht eine einfachere Lösung. Im Anhang ist die Tabelle Cars_modified.jmp und ein Skript, das es verwendet.Das Skript verweist von c:/temp auf die Tabelle. Ändern Sie daher das Skript so, dass es den richtigen Tabellenpfad hat.
Betreff: Wie wähle ich alle farbigen Zellen in einer Datentabelle aus?Es gibt keinen direkten Weg, dies zu erreichen.Teilweise, weil das Problem darin besteht, ob die Zeilen oder die Zellen gefärbt sind.Um dies festzustellen, schauen Sie in die Spalte, die die Zeilennummer enthält, d. h. in die Zeilenstatusspalte, und prüfen Sie, ob sich in den Zeilen, in denen die Zeilen gefärbt sind, eine Markierung befindet und diese dieselbe Farbe hat wie die Zeile, dann werden die Zeilen gefärbt.Wenn in einer farbigen Zeile keine farbige Markierung in der Zeilenstatusspalte vorhanden ist, ist jede Zelle farbig.
Was davon ist bei Ihnen der Fall?
Betreff: Wie wähle ich alle farbigen Zellen in einer Datentabelle ausNetter Trick – über das Spaltenskript! 
:folded_hands: Expression Indexing: Lese- und Schreibzugriff könnte die
if(Head Name(xp) =="Color Cells",
Teil ...
Bis es verfügbar ist, könnte man den Ausdruck in eine Liste umwandeln und die Listenindizierung verwenden:
dt = Open("C:/temp/Cars_modified.jmp");
myScript = dt:Model << Get Script;
SubstituteInto(myScript, Expr(New Column()), {});
colorsettings = Associative Array(Try(myScript["Color Cells"],{}));