I think the solution is to first stack the 2 groups of columns, and then to split the columns by the stacked bin values.
My Sample data table......your data, just only 4 Chan and 4 #Passed columns

Go to
Tables=>Stack
and perform a Multiple series stack

It creates a table that looks like:

Now go to
Tables=>Split
and split the data based upon the column called Data that has the Bin values

It produces the following table which I believe is what you want, minus the exact names for the columns

Here is the steps to do the above in a script,
names default to here(1);
dt = Open("Example.jmp");
// → Data Table( "Example" )
Data Table( "Example" ) << Stack(
columns(
:Chan A, :Chan B, :Chan C, :Chan D, :"#Passed A-200"n, :"#Passed B-200"n,
:"#Passed C-200"n, :"#Passed D-200"n
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Number of Series( 2 ),
Contiguous,
Output Table("Stacked")
);
// Split data table
// → Data Table( "Untitled 17" )
Data Table( "Stacked" ) << Split(
Split By( :Data ),
Split( :Data 2 ),
Group( :Batch ),
Remaining Columns( Drop All ),
Sort by Column Property,
Output Table( "Final")
);
Jim