Problem mit bedingter Formatierung (Farbe) mit 'für jede Zeile' und verschachtelter 'for'-SchleifeHallo,
Ich bin am Ende eines Skripts, in dem ich eine Reihe von Daten in verschiedenen Spalten (sowohl numerisch als auch zeichenweise) zusammengefasst habe.
Das Schleifen zum Formatieren numerischer Zellen, die bestimmte Kriterien erfüllen, ist einfach genug, aber ich habe ein Problem beim Zuweisen einer Farbe für Zeichenspalten, die eine bestimmte Teilzeichenfolge enthalten.
Beispielsweise sollte eine Zelle (mit folgendem Inhalt: 1,1,2,1,1,2,3,3) rot eingefärbt werden, da sie bei 1 Vorkommen das Zeichen '3' enthält.
Wenn ich den gesamten Inhalt der Zelle angebe, kein Problem, aber ich versuche, nach '3' zu suchen und entsprechend einzufärben -> scheitert.
Ich habe die Skripte unten hinzugefügt.
Alle mögliche Vorschläge würden geschätzt.
Beste,
Sebastian
Names Default To Here( 1 );
clear log();
dt = New Table( "test",
Add Rows( 8 ),
New Column( "unique_group_id",
Character,
"Nominal",
Set Values(
{"ELN-19-0588-A", "ELN-19-0588-B", "ELN-19-0588-C", "ELN-19-0588-D",
"ELN-19-0588-E", "ELN-19-0588-F", "ELN-19-0588-G", "ELN-19-0588-H"}
),
Set Display Width( 115 )
),
New Column( "FOB max",
Character,
"Nominal",
Set Selected,
Set Values(
{"0,0,0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0",
"0,0,3,0,0,1,0,2", "1,1,2,1,1,2,3,3", "0,0,0,0,0,0,0,0",
"4,2,2,3,2,3,3,4", "1,0,0,1,1,1,1,1"}
)
),
New Column( "glib1 % PBS - potatoe",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Set Selected,
Set Values( [100, 113.39, 108.3, 156.38, 822.21, 768.51, 487.2, 222.56] )
),
New Column( "calb (IHC) cere",
Character,
"Nominal",
Set Values(
{"0,0,0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0",
"0,0,0,0,0,0,0,0", "3,4,3,4,3,3,3,4", "3,3,3,5,2,3,3,3",
"0,0,0,0,0,0,0,0", "0,0,0,0,0,0,1,0"}
)
)
);
wait(2);
col=dt <<GET column="" names="">200,
column(col[i]) << color cells( "Light Red", Row())
)
)));
//Does not work - it needs to be an exact match
c="FOB";
b={"3"};//trying to look for cells in columns labelled with FOB whihc contains the character '3'
For(i=1,i<=nc,i++, if( Contains( col[i], c ),
for each row(
If( contains(b,as column(col[i])),
column(col[i])<< color cells( "Light Red", Row())
)
)));
wait (2);
//Works when specifying exactly the content of the cell(s) to match
c="FOB";
b={"1,1,2,1,1,2,3,3"};
For(i=1,i<=nc,i++, if( Contains( col[i], c ),
for each row(
If( contains(b,as column(col[i])),
column(col[i])<< color cells( "Red", Row())
)
)));
</GET>DatentabelleSkriptingBetreff: Problem mit bedingter Formatierung (Farbe) mit 'für jede Zeile' und verschachtelter 'for'-SchleifeSie haben Ihre Contains()-Funktion rückwärts angegeben und Ihre JMP-Listen verglichen.Beheben Sie diese und es funktioniert gut.

Names Default To Here( 1 );
clear log();
dt = New Table( "test",
Add Rows( 8 ),
New Column( "unique_group_id",
Character,
"Nominal",
Set Values(
{"ELN-19-0588-A", "ELN-19-0588-B", "ELN-19-0588-C", "ELN-19-0588-D",
"ELN-19-0588-E", "ELN-19-0588-F", "ELN-19-0588-G", "ELN-19-0588-H"}
),
Set Display Width( 115 )
),
New Column( "FOB max",
Character,
"Nominal",
Set Selected,
Set Values(
{"0,0,0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0",
"0,0,3,0,0,1,0,2", "1,1,2,1,1,2,3,3", "0,0,0,0,0,0,0,0",
"4,2,2,3,2,3,3,4", "1,0,0,1,1,1,1,1"}
)
),
New Column( "glib1 % PBS - potatoe",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Set Selected,
Set Values( [100, 113.39, 108.3, 156.38, 822.21, 768.51, 487.2, 222.56] )
),
New Column( "calb (IHC) cere",
Character,
"Nominal",
Set Values(
{"0,0,0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0",
"0,0,0,0,0,0,0,0", "3,4,3,4,3,3,3,4", "3,3,3,5,2,3,3,3",
"0,0,0,0,0,0,0,0", "0,0,0,0,0,0,1,0"}
)
)
);
wait(2);
col=dt <<GET column="" names="">200,
column(col[i]) << color cells( "Light Red", Row())
)
)));
//Does not work - it needs to be an exact match
c = "FOB";
b = "3";//trying to look for cells in columns labelled with FOB whihc contains the character '3'
For( i = 1, i <= nc, i++,
If( Contains( col[i], c ),
For Each Row(
If( Contains( As Column( col[i] ), b ),
Column( col[i] ) << color cells( "Light Red", Row() )
);
)
)
);
wait (2);
//Works when specifying exactly the content of the cell(s) to match
c = "FOB";
b = "1,1,2,1,1,2,3,3";
For( i = 1, i <= nc, i++,
If( Contains( col[i], c ),
For Each Row(
If( Contains( As Column( col[i] ), b ),
Column( col[i] ) << color cells( "Red", Row() )
)
)
)
);</GET>
Betreff: Problem mit bedingter Formatierung (Farbe) mit 'für jede Zeile' und verschachtelter 'for'-SchleifeHallo,
Ändern Sie Ihren Code so, dass er mit Zeile 67 im Code unten übereinstimmt.
Mit Enthält ( ) können Sie je nach den von Ihnen angegebenen Argumenten verschiedene Aktionen ausführen. Beispielsweise:
Enthält ( {"cat", "dog", "mouse", "dog", "horse"}, "dog" ) gibt 2 zurück, da das erste Vorkommen von "dog" in der angegebenen Liste an Position 2 liegt.
Enthält ( {"Rinder", "Hund", "Maus"}, "Katze") gibt 0 zurück, da "Katze" in der Liste nicht vorkommt. Wenn wir die Liste Element für Element durchsuchen möchten, um zu sehen, ob "cat" ein Teilstring eines beliebigen Elements ist, müssen wir die Liste durchlaufen.
Ihr ursprünglicher Code ähnelt in etwa diesem letzten Beispiel: Enthält (b, :col) überprüft, ob der Zellenwert der Spalte mit einem Element in b übereinstimmt, das Sie als {"3"} definiert haben. Es wurde keine Übereinstimmung gefunden.
Umgekehrt prüft der neue Code, Contains(:col, b[1]), ob b[1], das erste Element der Liste b, das "3" ist, im Spaltenzellenwert enthalten ist. Auf diese Weise sucht die Funktion Enthält (<>, <>) nach Teilzeichenfolge <> innerhalb von Zeichenfolge <> - was ich glaube, dass Sie das wollen.
Prost,
Brady
Enthält ( {"Katze", "Hund", "Maus"}, "Katze") gibt zurück
