Aufeinanderfolgende Spalten und Zeilen findenHallo,
Anbei die Datentabelle von 2 TEILEN, nämlich TEIL-02 und TEIL-03. Jeder Teil hat seine eigenen Spalten und Zeilen (ColX, RowY). Ich möchte JSL verwenden, um den TEIL zu identifizieren, der mehr als 4 aufeinanderfolgende Spalten oder Zeilen hat. Hier ist TEIL-02 der Teil, bei dem Zeilen mehr als 4 Mal hintereinander vorkommen. Ich möchte, dass meine Ausgabe nur eine Tabelle mit TEIL-ID und dem Ergebnis wie unten ist.


Automatisierung und SkriptingBetreff: Aufeinanderfolgende Spalten und Zeilen findenHier ist das JSL, das ich erstellt habe, um die neue Tabelle zu erstellen und sie wie angegeben zu füllen.
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"
)
)
);

Betreff: Aufeinanderfolgende Spalten und Zeilen findenHallo Jim, im vorherigen Datensatz sollte für PART-01, 02 „bestanden“ sein. Entschuldigen Sie die Fehlinformation. Anbei ein größerer Datensatz, der PART-01,02,03,17 enthält. Part-01,02,03 sollte „bestanden“ sein und nur PART-17 sollte „fehlschlagen“. Es sollte wie unten aussehen, aber Ihr Skript gibt an, dass PART02,03 ebenfalls fehlschlagen.

Betreff: Aufeinanderfolgende Spalten und Zeilen findenJa, Sie müssen die 4 in 7 und die -3 in -6 ändern.
Mit dem Gewichtungsfaktor können Sie die Gewichtung der einzelnen Durchschnittswerte festlegen. Der Wert 1 gibt an, dass für alle Werte die gleiche Gewichtung verwendet wird.
Vorher = legt die Anzahl der Zeilen vor der aktuellen Zeile fest, die bei der Berechnung des gleitenden Durchschnitts verwendet werden sollen.
Nach = legt die Anzahl der Zeilen nach der aktuellen Zeile fest, die bei der Berechnung des gleitenden Durchschnitts verwendet werden sollen.
Verwenden Sie abschließend bitte das JSL-Symbol oben in der Vorschau, wenn Sie JSL in die Diskussion eingeben. Es hilft den Lesern wirklich dabei, den Code zu lesen und zu interpretieren.
Ich habe Ihre letzte Antwort bearbeitet und Ihr aufgelistetes JSL in ein JSL-Anzeigefeld verschoben
Betreff: Aufeinanderfolgende Spalten und Zeilen findenHallo Jim, im vorherigen Datensatz sollte für PART-01, 02 „bestanden“ sein. Entschuldigen Sie die Fehlinformation. Anbei ein größerer Datensatz, der PART-01,02,03,17 enthält. Part-01,02,03 sollte „bestanden“ sein und nur PART-17 sollte „fehlschlagen“. Es sollte wie unten aussehen, aber Ihr Skript gibt an, dass PART02,03 ebenfalls fehlschlagen.

Betreff: Aufeinanderfolgende Spalten und Zeilen finden- Die Verwendung des gleitenden Durchschnittswerts für Spalten zur Kontrolle funktionierte nicht, daher habe ich ihn in die Verwendung einer Standardabweichung über die 7 Zeilen geändert.
- Die Methode, die ich zum Suchen der Zeile in der Datentabelle dtResults verwendete, funktionierte nicht. Ich musste zu einer For()-Schleife wechseln, um die erforderliche Genauigkeit zu erreichen.
- Ich hatte die Logik umgekehrt ... „Bestanden“, wenn die Werte in einer Zeile gefunden wurden, statt „Fehlgeschlagen“, wenn das passierte.
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"
)
)
);
Sie müssen den Code studieren und ihn nicht einfach ausschneiden und in Ihr Skript einfügen. Sie müssen ausreichend informiert sein, um zukünftige Probleme beheben und Korrekturen generieren zu können.
Betreff: Aufeinanderfolgende Spalten und Zeilen findenDanke, Jim. Nach einigen Anpassungen hat es bei mir funktioniert.