Here is a formula that finds the first percent shift, and then goes through all of the remaining columns and finds and values and does a percent change from the initial value, and if it is a negative change > 20% it sets the result to a 1.
I am pretty sure it isn't exactly what you are looking for. I don't understand what " and then assess all following reading back against the first and the previous reading to access shift overtime" precisely means. Study my code and see what it is doing, and then see if you can change it to do exactly what your really want. If not, respond back with some clarification or questions about my JSL.
As Constant( dt = Current Data Table() );
theMatrix = dt[Row(), Index( 2, 23 )];
start = Loc( theMatrix )[1] + 1;
startVal = dt[Row(), start];
firstChange = .;
currentChange = .;
firstValue = .;
For( i = start, i <= 22, i++,
If(
Is Missing( dt[Row(), i] ) == 0 & Is Missing( firstValue ) == 1, firstValue = dt[Row(), i],
Is Missing( dt[Row(), i] ) == 0 & Is Missing( firstChange ) == 1,
firstChange = (dt[Row(), i] - firstValue) / firstValue,
Is Missing( dt[Row(), i] ) == 0 & Is Missing( firstChange ) == 0,
currentChange = (dt[Row(), i] - firstValue) / firstValue;
If( currentChange < -0.2,
currentChange = 1;
break(),
currentChange = .
);
)
);
currentChange;
Jim