And building on the example from @txnelson, you could do something like this:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
ps = dt << Process Screening(
Process Variables( :NPN1, :PNP1, :PNP2, :NPN2, :PNP3, :IVP1, :PNP4 ),
Grouping( :SITE ),
Control Chart Type( "Indiv and MR" )
);
psr = Report( ps );
tb = psr[Table Box( 1 )];
tb << setRowChangeFunction(
Function( {this},
// Remove any existing column selection
dt << selectColumns([]);
// Use the current row selection to select table columns
sr = this << getSelectedRows;
cols = {};
for(c=1, c<=NRow(sr), c++, InsertInto(cols, (tb[StringColBox(1)] << get)[sr[c]]));
dt << selectColumns(cols);
);
);