Ich suche nach einer Formel, um auf Änderungen im Zeitverlauf auf Zeilenebene zuzugreifen, indem ich mich von links nach rechts bewege. Ich möchte die prozentuale Verschiebung vom ersten Messwert zum nächsten ermitteln und dann alle folgenden Messwerte mit dem ersten und dem vorherigen Messwert vergleichen, um auf die Verschiebung im Zeitverlauf zuzugreifen. Wenn es Abwärtsverschiebungen größer oder gleich 20 % gibt, geben Sie in einer Ergebnisspalte eine 1 an.
Hier ist eine Formel, die die erste prozentuale Verschiebung ermittelt und dann alle verbleibenden Spalten durchgeht, Werte findet und eine prozentuale Änderung vom Anfangswert vornimmt. Wenn die Änderung negativ ist und > 20 % beträgt, wird das Ergebnis auf 1 gesetzt.
Ich bin mir ziemlich sicher, dass es nicht genau das ist, wonach Sie suchen. Ich verstehe nicht, was „ und dann alle folgenden Messwerte mit dem ersten und dem vorherigen Messwert vergleichen, um auf die Überstundenschicht zuzugreifen“ genau bedeutet. Studieren Sie meinen Code und sehen Sie, was er tut, und sehen Sie dann, ob Sie ihn ändern können, um genau das zu tun, was Sie wirklich wollen. Wenn nicht, antworten Sie mit einigen Erläuterungen oder Fragen zu meinem 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;