Anidar sentencias If()Buenas tardes,
Estoy tratando de calcular "aprobar/reprobar" en función de un conjunto dado de límites de especificación. El problema con el que me encuentro es que tengo aproximadamente 386 dispositivos en una oblea que se prueba en 16 canales diferentes, todos con límites de especificaciones diferentes. Para colmo, tengo 2 condiciones de prueba diferentes. La única solución que tengo es un montón de declaraciones IF()
If( (:Canal == 0 ) & (:salida_prueba >= 16) & (salida_prueba <= 22), 1, 99)
nueva columna ("aprobado/reprobado") << fórmula (si (condición, resultado 1, etc.)
Si hay una manera más fácil, soy todo oídos.
Gracias
He adjuntado 1 de las tablas en las que necesito realizar esta acción.
Re: Sentencias anidar If()Gracias por la entrada, terminé haciendo lo siguiente
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
)
);
Re: Sentencias anidar If()Ese fue mi pensamiento original, sin embargo, quería dar a los ingenieros de pruebas/gerencia la libertad de ajustar los límites si así lo deseaban.
No incluí toda la información y por eso lo siento. Se adjunta un subíndice de mi secuencia de comandos de extracción de datos general que aparece cuando presiona el botón "rendimiento" en mi ventana principal. Quería usar las variables establecidas en este script en mis declaraciones if() anidadas.
Gracias por tu aporte hasta ahora.
Re: Sentencias anidar If()La forma en que lo hice en Excel, aunque no la más rápida, ayuda a evitar cometer errores.Cree una columna 0/1 para cada canal usando IF y AND para ver si está dentro de los límites de especificación.Luego simplemente multiplique las columnas juntas: solo obtendrá 1 si todos los canales están dentro de los límites.
Re: Sentencias anidar If()Cree una nueva tabla de datos con columnas para canal, condición de prueba, límite superior e inferior.Luego, simplemente junte las tablas, haciendo coincidir el canal y la condición de prueba.Luego, utilizando las columnas de límite superior e inferior, calcule el paso/fallo