改變配方如附件所示,列 ROW(3)的公式有效,但只針對一行。
公式列“使用的For循環”如下圖顏色所示,我知道公式中不能包含For循環,所以刪除For循環部分,將“ :Scan input[i]”改為其他表達式或其他函數來實現,從“ :Scan input[1] ”改為“ :Scan input[結束行號] ”,然後根據“Scan input”列的每一行自動更新。請幫忙修改一下,謝謝!
For(i = 1, i <= N Rows(), i++,
If(Is Missing(:Scan input),
"",
If(Col Sum(:Blacklist == :Scan input[i]) > 0,
"NG",
"OK"
)
)
)
自動化和腳本數據探索與視覺化視窗回覆:改變配方您說過公式中不能有 For 迴圈。關於公式中的 For 迴圈的實際說法是,不需要使用公式中的 For 迴圈來循環遍歷資料表中的每一行,因為公式會自動套用到每一行。
但如果需要在每一行上運行 For 循環,那麼當然可以使用它。
以下是寫公式的 3 種方法,我相信這些公式可以實現你想要的結果

If( Is Missing( :Scan input ),
theResult = "",
theResult = "OK";
For( i = 1, i <= N Rows( Current Data Table() ), i++,
If( :Blacklist == :Scan input[i],
theResult = "NG";
Break();
)
);
);
theResult;
If( Is Missing( :Scan input ),
"",
curBlacklist = :Blacklist;
If( N Rows( Current Data Table() << get rows where( :Scan input == curBlacklist ) ) > 0,
"NG",
"OK"
);
)
As Constant( Summarize( ScanList = by( :Scan input ) ) );
If( Is Missing( :Scan input ),
"",
If( N Rows( Loc( ScanList, :Blacklist ) ) > 0,
"NG",
"OK"
)
);
回覆:改變配方謝謝!但第3、4、5行的正確結果應該要顯示NG。問題還沒解決。
回覆:改變配方謝謝!但第3行和第5行的正確結果應該顯示NG。問題還沒解決。
回覆:改變配方如何確定“NG”或“OK”結果(用文字,而不是 JSL)?
回覆:改變配方我提供的所有公式都會查看給定行的黑名單值,然後查看掃描輸入的所有行,看看是否有任何行具有相同的值。
我肯定誤解了你想做的事情。我認為這就是您提供的 JSL 試圖做的事情。可以描述一下你想要的結果嗎?
回覆:改變配方所有黑名單列的結果均為NG。實際情況是,已經知道某個設備生產的產品為 NG。需要用條碼槍把它們找出來掃描到掃描輸入欄中,只要「掃描輸入」欄的值在黑名單欄的任一行,就會顯示NG。例如第1行完全相等所以顯示NG,第3行不完全相等,但是黑名單列的第1行出現了“X1”,所以需要顯示NG。
回覆:改變配方將所有黑名單值收集到列表/關聯數組中,並將當前行值與該值進行比較
As Constant(
bl = :Blacklist << get values;
);
If(!IsMissing(:Scan input),
If(Contains(bl, :Scan input),
"NG"
,
"OK"
);
,
""
);

回覆:改變配方所有黑名單列的結果均為NG。不分順序,只要「掃描輸入」欄位的值出現在Blacklist列的任一行,都會顯示NG。使用公式可以輕鬆在掃描過程中找到缺陷產品。