Cambiar fórmulaComo muestran los archivos adjuntos, la fórmula de la columna ROW(3) es efectiva pero sólo para una fila.
La fórmula de la columna "Bucle For usado" se muestra en el color que se muestra a continuación. Sé que las fórmulas no pueden contener bucles For, por lo que elimino las partes del bucle For y cambio " : Scan input[i]" por otras expresiones u otras funciones para implementar de " :Entrada de escaneo[1] " a " : Scan input[número de fila final] ", y luego se actualiza automáticamente en función de cada fila de la columna "Scan input". ¡Ayúdenme a corregirlo, gracias!
For(i = 1, i <= N Rows(), i++,
If(Is Missing(:Scan input),
"",
If(Col Sum(:Blacklist == :Scan input[i]) > 0,
"NG",
"OK"
)
)
)
Automatización y scriptingExploración y visualización de datosVentanasRe: Cambiar fórmulaUsted afirmó que no se puede incluir un bucle For en una fórmula. La afirmación real sobre los bucles For en las fórmulas es que no es necesario utilizar un bucle For en una fórmula para recorrer cada fila de una tabla de datos, porque las fórmulas se aplican automáticamente a cada fila.
Pero si es necesario ejecutar un bucle For en cada fila, entonces ciertamente se puede utilizar.
Aquí hay 3 formas de escribir una fórmula que hará lo que creo que es el resultado deseado.

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"
)
);
Re: Cambiar fórmula¡Gracias! Sin embargo, el resultado correcto en las filas 3, 4 y 5 debería mostrar NG. Aún no se ha resuelto.
Re: Cambiar fórmula¡Gracias!Sin embargo, el resultado correcto en las filas 3 y 5 debería mostrar NG. Aún no se ha resuelto.
Re: Cambiar fórmula¿Cómo se determina el resultado "NG" u "OK" (en palabras, no como JSL)?
Re: Cambiar fórmulaTodas las fórmulas que proporcioné miran el valor de la Lista negra para una fila determinada y luego buscan en todas las filas la entrada de escaneo para ver si hay alguna fila que tenga el mismo valor.
Debo haber malinterpretado lo que intentas hacer. Pensé que eso era lo que intentabas hacer con el JSL que me proporcionaste. ¿Puedes describir cuáles son los resultados que deseas obtener?
Re: Cambiar fórmulaLos resultados de todas las columnas de la Lista negra son NG. El escenario real es que ya se sabe que los productos producidos por un dispositivo son NG. Deben descubrirse y escanearse en la columna de entrada de escaneo con una pistola de código de barras, y se mostrará NG siempre que el valor de la columna "Entrada de escaneo" esté en cualquier fila de la columna de la Lista negra. Por ejemplo, la fila 1 es exactamente igual, por lo que muestra NG, y la fila 3 no es exactamente igual, pero "X1" aparece en la fila 1 de la columna de la Lista negra, por lo que se necesita mostrar NG.
Re: Cambiar fórmulaRecopilar todos los valores de la lista negra en una lista/matriz asociativa y comparar el valor de las filas actuales con ese valor.
As Constant(
bl = :Blacklist << get values;
);
If(!IsMissing(:Scan input),
If(Contains(bl, :Scan input),
"NG"
,
"OK"
);
,
""
);

Re: Cambiar fórmulaLos resultados de todas las columnas de la lista negra son NG. Sin ningún orden, siempre que el valor de la columna "Entrada de escaneo" aparezca en cualquier fila de la columna de la lista negra, se mostrará NG. El uso de la fórmula facilita la búsqueda del producto defectuoso durante el proceso de escaneo.