Verschachteln Sie If()-AnweisungenGuten Tag,
Ich versuche, „Bestanden/Nicht bestanden“ anhand einer Reihe vorgegebener Spezifikationsgrenzen zu berechnen. Das Problem, auf das ich stoße, ist, dass ich ungefähr 386 Geräte auf einem Wafer habe, der auf 16 verschiedenen Kanälen getestet wird, die alle unterschiedliche Spezifikationsgrenzen haben. Um das Ganze abzurunden, habe ich zwei verschiedene Testbedingungen. Die einzige Lösung, die ich habe, sind eine Menge IF()-Anweisungen
If( (:Channel == 0 ) & (:test_output >= 16) & (test_output <= 22), 1, 99)
neue Spalte( „bestanden/nicht bestanden“) << Formel( If( Bedingung, Ergebnis 1 usw.)
Wenn es einen einfacheren Weg gibt, bin ich ganz Ohr.
Danke
Ich habe eine der Tabellen angehängt, an denen ich diese Aktion ausführen muss.
Betreff: If()-Anweisungen verschachtelnVielen Dank für die Eingabe. Ich habe gerade Folgendes getan
new column( "I/O" ) << Formula(
If(
(:trmode == "Rx") & (:Channel == 0) & (:TEST_OUTPUT >= 6.16) & (:TEST_OUTPUT <= 23.59), 1,
(:trmode == "Rx") & (:Channel == 1) & (:TEST_OUTPUT >= 22.47) & (:TEST_OUTPUT <= 36.72), 1,
(:trmode == "Rx") & (:Channel == 2) & (:TEST_OUTPUT >= 20.65) & (:TEST_OUTPUT <= 33.77), 1,
(:trmode == "Rx") & (:Channel == 3) & (:TEST_OUTPUT >= 21.79) & (:TEST_OUTPUT <= 41.64), 1,
(:trmode == "Rx") & (:Channel == 4) & (:TEST_OUTPUT >= 18.73) & (:TEST_OUTPUT <= 32.72), 1,
(:trmode == "Rx") & (:Channel == 5) & (:TEST_OUTPUT >= 18.53) & (:TEST_OUTPUT <= 32.42), 1,
(:trmode == "Rx") & (:Channel == 6) & (:TEST_OUTPUT >= 23.42) & (:TEST_OUTPUT <= 40.84), 1,
(:trmode == "Rx") & (:Channel == 7) & (:TEST_OUTPUT >= 21.96) & (:TEST_OUTPUT <= 47.10), 1,
(:trmode == "Rx") & (:Channel == 8)</img> & (:TEST_OUTPUT >= 18.98) & (:TEST_OUTPUT <= 48.50), 1,
(:trmode == "Rx") & (:Channel == 9) & (:TEST_OUTPUT >= 20.07) & (:TEST_OUTPUT <= 41.04), 1,
(:trmode == "Rx") & (:Channel == 10) & (:TEST_OUTPUT >= 25.25) & (:TEST_OUTPUT <= 49.21), 1,
(:trmode == "Rx") & (:Channel == 11) & (:TEST_OUTPUT >= 21.91) & (:TEST_OUTPUT <= 35.20), 1,
(:trmode == "Rx") & (:Channel == 12) & (:TEST_OUTPUT >= 22.49) & (:TEST_OUTPUT <= 40.70), 1,
(:trmode == "Rx") & (:Channel == 13) & (:TEST_OUTPUT >= 25.39) & (:TEST_OUTPUT <= 41.81), 1,
(:trmode == "Rx") & (:Channel == 14) & (:TEST_OUTPUT >= 22.50) & (:TEST_OUTPUT <= 41.92), 1,
(:trmode == "Rx") & (:Channel == 15) & (:TEST_OUTPUT >= 23.65) & (:TEST_OUTPUT <= 46.53), 1, 0
)
);
Betreff: If()-Anweisungen verschachtelnDas war mein ursprünglicher Gedanke, aber ich wollte den Testingenieuren/dem Management die Freiheit geben, die Grenzwerte anzupassen, wenn sie dies wünschen.
Ich habe nicht alle Informationen angegeben, was mir leid tut. Anbei ist ein Index meines gesamten Datenabrufskripts, der angezeigt wird, wenn Sie in meinem Hauptfenster auf die Schaltfläche „Ausgeben“ klicken. Ich wollte die in diesem Skript festgelegten Variablen in meinen verschachtelten if()-Anweisungen verwenden.
Vielen Dank für Ihren bisherigen Beitrag.
Betreff: If()-Anweisungen verschachtelnDie Art und Weise, wie ich das in Excel gemacht habe, ist zwar nicht die schnellste, trägt aber dazu bei, Fehler zu vermeiden.Erstellen Sie mit IF und AND eine 0/1-Spalte für jeden Kanal, um zu sehen, ob er innerhalb der Spezifikationsgrenzen liegt.Dann multiplizieren Sie einfach die Spalten miteinander – Sie erhalten nur 1, wenn alle Kanäle innerhalb der Grenzen liegen.
Betreff: If()-Anweisungen verschachtelnErstellen Sie eine neue Datentabelle mit Spalten für Kanal, Testbedingung, Obergrenze und Untergrenze.Dann fügen Sie einfach die Tische zusammen, passend zu Kanal und Testzustand.Berechnen Sie dann anhand der oberen und unteren Grenzwertspalten das Bestehen/Nichtbestehen