Skript zur kumulativen Summe, bis eine bestimmte Grenze erreicht istMeine Datentabelle beginnt mit 3 Spalten, Datum, Test_Qty und Fail_Qty.
Ich erstelle ein Skript für zwei neue Spalten, Cumulative_Sum_Test_Qty und Cumulative_Fail_Qty.
In der Spalte Cumulative_Sum_Test_Qty ist die Testmenge die kumulative Summe von den aktuellen Zeilen zur vorherigen Zeile, um 300 Mengen zu erfüllen und eine Datenmenge zu bilden.
In Cumulative_Sum_Fail_Qty ist die Fehlermenge die kumulative Summe von der aktuellen Zeile zu den vorherigen Zeilen, die der kumulierten Summen-Testmenge entspricht.
Ich stecke fest, wenn ich das Skript für die kumulative Summe für beide Spalten erstelle.
Kann mir hier jemand helfen
SkriptingBetreff: Skript zur kumulativen Summe, bis eine bestimmte Grenze erreicht istHier ist eine Lösung. Ich gehe davon aus, dass Sie neu starten, sobald Sie über 300 gehen. Wenn Sie anhalten müssen, bevor Sie über 300 gehen, ist die logische Änderung ziemlich einfach.
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "Cumulative_Sum_Test_Qty" );
dt << New Column( "Cumulative_Sum_Fail_Qty" );
dt:Cumulative_Sum_Test_Qty[1] = dt:Test_Qty[1];
dt:Cumulative_Sum_Fail_Qty[1] = dt:Fail_Qty[1];
holdTest = dt:Test_Qty[1];
holdFail = dt:Fail_Qty[1];
For( theRow = 2, theRow <= N Rows( dt ), theRow++,
If( dt:Cumulative_Sum_Test_Qty[theRow - 1] > 300,
dt:Cumulative_Sum_Test_Qty[theRow] = dt:Test_Qty[theRow];
dt:Cumulative_Sum_Fail_Qty[theRow] = dt:Fail_Qty[theRow];
,
dt:Cumulative_Sum_Test_Qty[theRow] = dt:Cumulative_Sum_Test_Qty[theRow - 1] + dt:Test_Qty[theRow];
dt:Cumulative_Sum_Fail_Qty[theRow] = dt:Cumulative_Sum_Fail_Qty[theRow - 1] + dt:Fail_Qty[theRow];
)
);
Betreff: Skript zur kumulativen Summe, bis eine bestimmte Grenze erreicht istDanke Jim.
Was ich brauchte, ist nach über 300, in der folgenden Zeile findet wieder eine neue kumulative Summe statt, bis über 300, ...
Es ist eine Art rückwärts bewegte kumulative Summe ..... Hier stecke ich fest.

Betreff: Skript zur kumulativen Summe, bis eine bestimmte Grenze erreicht istOK ..... Ich schätze die klarere Definition. Das folgende Skript scheint mit Ihren Testdaten zu funktionieren
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "Cumulative_Sum_Test_Qty" );
dt << New Column( "Cumulative_Sum_Fail_Qty" );
dt:Cumulative_Sum_Test_Qty[1] = dt:Test_Qty[1];
dt:Cumulative_Sum_Fail_Qty[1] = dt:Fail_Qty[1];
holdTest = dt:Test_Qty[1];
holdFail = dt:Fail_Qty[1];
For( theRow = 2, theRow <= N Rows( dt ), theRow++,
If( dt:Cumulative_Sum_Test_Qty[theRow - 1] > 300,
holdTest = :Test_Qty[theRow];
holdFail = :Fail_Qty[theRow];
curRow = theRow;
While( holdTest < 300,
curRow = curRow - 1;
holdTest = holdTest + :Test_Qty[curRow];
holdFail = holdFail + :Fail_Qty[curRow];
);
dt:Cumulative_Sum_Test_Qty[theRow] = holdTest;
dt:Cumulative_Sum_Fail_Qty[theRow] = holdFail;
,
dt:Cumulative_Sum_Test_Qty[theRow] = dt:Cumulative_Sum_Test_Qty[theRow - 1] + dt:Test_Qty[theRow];
dt:Cumulative_Sum_Fail_Qty[theRow] = dt:Cumulative_Sum_Fail_Qty[theRow - 1] + dt:Fail_Qty[theRow];
)
);