尋找連續的列和行你好,
附件是2個部分的資料表,即PART-02和PART-03。每個部分都有自己的列和行(ColX、RowY)。我希望使用 JSL 來識別連續列或行出現超過 4 次的 PART。我希望我的輸出只是一個包含零件 ID 和結果的表格,如下所示。


自動化和腳本編寫回覆:尋找連續的列和行這是我想出來的 JSL,它會建立新表並按照您的指定填充它
Names Default To Here( 1 );
dt = Current Data Table();
dtResults = dt <<
summary(
group( :LotLabel, :WaferLabel ),
output table( "Results" ),
Link to Original Data Table( 0 )
);
dtResults << delete columns( :N Rows );
dtResults << New Column( "Results",
character,
set each value( "FAIL" )
);
For Each Row(
dt,
If( Row() >= 4,
If(
Col Moving Average(
:ColX,
weighting = 1,
before = -3,
after = 0,
:LotLabel,
:WaferLabel
) == :ColX |
Col Moving Average(
:RowY,
weighting = 1,
before = -3,
after = 0,
:LotLabel,
:WaferLabel
) == :RowY,
dtResults:Results[dtResults << get rows where(
dtResults:LotLabel == dt:LotLabel &
dtResults:WaferLabel == dt:WaferLabel
)] = "PASS"
)
)
);

回覆:尋找連續的列和行你好,Jim,在先前的資料集中,PART-01、02 應該通過。抱歉提供錯誤訊息。附件是一個更大的資料集,包括 PART-01、02、03、17。 Part-01、02、03 應該通過,只有 PART-17 應該失敗。它應該如下所示,但您的腳本指出 PART02,03 也失敗。

回覆:尋找連續的列和行是的,您需要將 4 更改為 7,將 -3 更改為 -6。
加權因子提供了設定每個平均值的權重的能力。值 1 表示對每個值使用相同的權重。
Before = 設定目前行之前用於計算移動平均值的行數。
After = 設定目前行之後用於計算移動平均值的行數。
最後,在進入 JSL 討論時,請使用預覽頂部的 JSL 圖示。它確實有助於讀者閱讀和解釋程式碼。
我已編輯了您上次的回复,並將您列出的 JSL 移至 JSL 顯示框中
回覆:尋找連續的列和行你好,Jim,在先前的資料集中,PART-01、02 應該通過。抱歉提供錯誤訊息。附件是一個更大的資料集,包括 PART-01、02、03、17。 Part-01,02,03 應該通過,只有 PART-17 應該失敗。它應該如下所示,但您的腳本指出 PART02,03 也失敗。

回覆:尋找連續的列和行- 使用 Col 移動平均線作為檢查不起作用,因此我將其更改為使用 7 行的標準差。
- 我用來尋找 dtResults 資料表中的行的方法不起作用。我必須更改為 For() 循環才能獲得所需的準確性。
- 我的邏輯是倒退的......如果找到連續的值則通過,而不是發生這種情況時失敗。
Names Default To Here( 1 );
dt = Current Data Table();
dtResults = dt << summary(
group( :LotLabel, :WaferLabel ),
output table( "Results" ),
Link to Original Data Table( 0 )
);
dtResults << delete columns( :N Rows );
dtResults << New Column( "Results",
character,
set each value( "PASS" )
);
For( i = 1, i <= N Rows( dt ), i++,
If( i >= 7,
If(
Std Dev( dt:ColX[i - 6 :: i] ) == 0 |
Std Dev( dt:RowY[i - 6 :: i] ) == 0,
dtResults:Results[dtResults <<
get rows where(
dtResults:LotLabel == dt:LotLabel[i] & dtResults
:WaferLabel == dt:WaferLabel[i]
)] = "FAIL"
)
)
);
您需要研究程式碼,而不僅僅是將其剪切並貼上到腳本中。您需要有足夠的知識才能調試未來的問題並產生修復。
回覆:尋找連續的列和行謝謝,吉姆。經過一些調整後,它對我有用。