Hallo,
Ich versuche, alle fehlerhaften Zellen in der angehängten Datentabelle zu ersetzen. Diese sind rot hervorgehoben und bestehen die Zellen durch 0.

Habe das hier gefunden, aber irgendetwas funktioniert nicht-
Wie erhalten Sie mit JSL die Farbe einer bestimmten Zelle in einer Datentabelle?
Gibt es eine bessere Möglichkeit, die Zellenwerte zu ersetzen?
Folgendes habe ich versucht:
Names Default To Here( 1 );
dt = Current Data Table();
cols = dt << get column group( "Tests" );
get_cell_color = Function( {col, r},
s = col << get script;
//Locate argument "Color Cells" in column script
For( i = 1, i <= N Arg( s ), i++,
If( Head Name( Arg( s, i ) ) == "Color Cells",
p = i;
Break();
)
);
//Identify the sublist that contains the color of row r
L = Arg( Arg( s, p ), 1 );
For( i = 1, N Items( L ), i++,
If( N Row( Loc( L[i][2], r ) ) == 1,
color = L[i][1];
Break();
)
);
color;
);
//
test_cols = Transform Each( {col}, cols, col << get name );
dt << Select All Rows;
selrow = dt << get Selected Rows();
dt << begin data update;
For Each( {testcol, idx}, test_cols,
For Each( {ro, idx2}, selrow,
cellcolor = get_cell_color( Column( testcol ), ro );
If( !cellcolor == 3,
Column( testcol )[ro] = 0
)
;
)
);
dt << end data update;Danke,
Wie erhalte ich die Zeilennummer der farbigen Zellen in einer Spalte und weise ihr in einer neu erstellten Spalte ein Tag (z. B. „1“) zu? Könnte einen anderen Vorschlag liefern. Mit einer kleinen Änderung an create_failed_column_after (Sie sollten es auch umbenennen) können Sie es dazu bringen, die Werte zu aktualisieren, anstatt eine neue Spalte mit den Werten zu erstellen.
Auf diese Weise können Sie das in diesem Beitrag gefundene Skript ändern.
Mehr sehen...
Names Default To Here(1);
get_colored_cells = Function({dt, colname}, {Default Local},
colscript = Column(dt, colname) << Get Script;
l = Substitute(Name Expr(colscript), Expr(New Column()), List());
colored_cells = {};
Try(
colors = l["Color Cells"];
If(Type(colors[1]) == "List",
jmptrickery = 1,
jmptrickery = 0
);
For Each({color}, colors,
If(jmptrickery,
Insert Into(colored_cells, color[2]),
Insert Into(colored_cells, color)
)
);
);
Return(Matrix(colored_cells));
);
colored_to_pass_fail = function({dt, colname}, {Default Local},
failed_rows = get_colored_cells(dt, colname);
row_vals = J(1, N Rows(dt), 0);
row_vals[failed_rows] = 1;
Column(dt, colname) << set values(row_vals);
// dt[0, colname] = row_vals`; // or data table subscripting
);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
wait(1);
dt << Select Rows([4,5,6,7, 10,11, 14, 15]);
:height << Color Cells(3);
dt << clear select;
wait(1);
dt << Begin Data Update;
For Each({colname}, dt << Get Column Names("String", Continuous),
colored_to_pass_fail(dt, colname);
);
dt << End Data Update;
wait(0);