特定の制限に達するまで累積合計を行うスクリプト私のデータ テーブルは、Date、Test_Qty、Fail_Qty の 3 つの列で始まります。
Cumulative_Sum_Test_Qty と Cumulative_Fail_Qty という 2 つの新しい列のスクリプトを作成しています。
Cumulative_Sum_Test_Qty 列のテスト数量は、1 ロットのデータを形成するために 300 数量を満たすために、現在の行から前の行までの累積合計です。
Cumulative_Sum_Fail_Qty では、失敗した数量は、現在の行から前の行までの累積合計であり、累積合計テスト数量が行われます。
両方の列の累積合計のスクリプトを作成するときに行き詰まります。
誰でもここで助けを提供できますか
スクリプティングRe: 特定の制限に達するまで累積合計を行うスクリプトありがとうジム。 できます。
あなたが提供したスクリプト ロジックを調べます。 これは私の知識を高めるのに役立ちます。
あなたの助けと指導に感謝します。
ありがとうございました。
Re: 特定の制限に達するまで累積合計を行うスクリプトわかりました...より明確な定義に感謝します。以下のスクリプトは、テストデータで機能するようです
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];
)
);
Re: 特定の制限に達するまで累積合計を行うスクリプトありがとうジム。
私が必要としたのは、300を超えた後、次の行で、300を超えるまで新しい累積合計が再び発生することです...
一種の後方移動累積和……。これは私が立ち往生するところです。

Re: 特定の制限に達するまで累積合計を行うスクリプトこれが解決策です。300を超えたらすぐに再起動すると仮定します。300 を超える前に停止する必要がある場合、ロジックの変更は非常に簡単です。
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];
)
);