Not the simplest way of doing this, but might work for you. Note that you might have to add extra checks if you have one-sided specification limits
Names Default To Here(1);
dt = Open("$DOWNLOADS/Transpose of u4_trimmed.jmp");
cols = dt << Get Column Names("String");
labelidx = Contains(cols, "Label");
partcols = Remove From(cols, labelidx + 1, Contains(cols, "LSL") - labelidx - 1);
m = J(N Rows(dt), N Items(partcols), 0);
For Each Row(dt,
m[Row(), 0] = dt[Row(), partcols] < :LSL | dt[Row(), partcols] > :USL
);
For Each({partcol, idx}, partcols,
color_rows = Loc(m[0, idx]);
If(N Items(color_rows) > 0,
Column(dt, partcol) << Color Cells("Red", color_rows);
);
);
-Jarmo