Fórmulas condicionales y texto libre en la misma columnaEstoy creando una plantilla de tabla de datos para que otros la usen y me la envíen. En algunos casos, los datos en ColB son una función de ColA, pero hay condiciones en las que esto no es cierto. Me gustaría hacer la vida más fácil para el remitente cuando sea posible completando ColB automáticamente (usando una fórmula) una vez que se ingresa ColA, pero aún permitirles ingresar una cadena personalizada en ColB si su entrada ColA no se ajusta a la relación predefinida . ¿Hay una manera de lograr esto? Ingenuamente esperaba que dejar la condición "else" en blanco en mi declaración if podría habilitar esto, pero estaba equivocado.
Bono: Sería aún mejor si pudiera usar Verificaciones de lista además de toda esta funcionalidad (ya que todavía hay solo una lista establecida de valores aceptables para ColB), pero JMP ya ha arrojado errores que me dicen que no puedo agregar una fórmula encima de una verificación de lista (que supongo que tiene sentido dado que una fórmula y el texto libre no pueden coexistir).
Tengo el presentimiento de que estoy tratando de hacer demasiado con una tabla simple y probablemente necesite un formulario de entrada más elegante para lograr todo esto. Pero solo quería comprobar antes de seguir ese camino. Gracias de antemano.
Re: Fórmulas condicionales y texto libre en la misma columna¡Ahh ya veo! Coloque la fórmula de 'color' en la columna "Material 2", pero aplíquela a la columna "Material (si es necesario)" que tiene la lista de verificación. ¡Mucho mejor! Estaba tratando de poner la fórmula en la columna "Material (si es necesario)". ¡Buena cosa!
Re: Fórmulas condicionales y texto libre en la misma columnaSí, puedes colorear la celda de la otra columna. La fórmula es un poco más complicada y debe agregar el color cuando sea necesario y eliminarlo (en caso de que se haya agregado antes) cuando no sea así.
Match( :Furniture Type,
"Bed",
If( Is Missing( :"Material (if needed)"n ),
:"Material (if needed)"n << color cells( "Red", {Row()} );
"PLEASE ADD VALUE IN MATERIAL COLUMN";
,
:"Material (if needed)"n << color cells( "Black", {Row()} );
:"Material (if needed)"n;
),
"Chair", "Wood",
"Sofa",
If( Is Missing( :"Material (if needed)"n ),
:"Material (if needed)"n << color cells( "Red", {Row()} );
"PLEASE ADD VALUE IN MATERIAL COLUMN";
,
:"Material (if needed)"n << color cells( "Black", {Row()} );
:"Material (if needed)"n;
),
"Table", "Metal"
)Re: Fórmulas condicionales y texto libre en la misma columnaGracias, @Peter_Hersh ! Lo siento, me costó explicarlo muy bien. Sin embargo, creo que la propuesta de Jeff debería funcionar. ¡Realmente aprecio tu aporte!
Re: Fórmulas condicionales y texto libre en la misma columnaGracias, @Jeff_Perkinson ! Creo que esta es una implementación decente ya que las instrucciones se completarán automáticamente a medida que el usuario complete el contenido de izquierda a derecha para una fila determinada. Debería haber pensado en construir instrucciones en una fórmula.
Si es posible colorear automáticamente las celdas en la columna "Material (si es necesario)" en función de los valores en la columna "Material 2", sería todo oídos. Traté de implementar esto con una fórmula, pero luego no pude mantener la verificación de la lista en la columna "Material (si es necesario)". De esta manera, podría usar un indicador de color para una celda que debe completarse y ocultar completamente la columna "Material 2" del ingresador (ya que no necesitan ver la salida "Material 2").
Re: Fórmulas condicionales y texto libre en la misma columnaGracias, @DonMcCormack ! Sí, Row States ha estado en mi lista de cosas por aprender. Gracias por señalarme a ellos. Lo miraré.
Re: Fórmulas condicionales y texto libre en la misma columna@Matt_Converse , creo que la forma en que manejaría esto es con dos columnas para que el usuario complete, una para (usando su ejemplo anterior) Tipo de muebles y otra para Material y luego su columna de fórmula usaría su búsqueda para los Tipos de muebles que conoce, y la columna Material para aquellos que no.
En su fórmula, puede verificar si la columna Material (si es necesario) está completa o no y alertar al usuario de que debe completarla. También puede usar una propiedad Verificación de lista en la columna Material.

Re: Fórmulas condicionales y texto libre en la misma columnaHola Matt,
Podría tener sentido tener una llamada rápida. Es posible que no entienda completamente lo que está tratando de lograr.No dude en ponerse en contacto conmigo en peter.hersh@jmp.com
Puede crear fácilmente un solo script que creará todas estas relaciones de columna a columna a la vez.A menos que haya alguna razón por la que esto tenga que hacerse.
Re: Fórmulas condicionales y texto libre en la misma columna@Matt_Converse puede echar un vistazo al uso del controlador de estado de fila junto con una función que verifica y actualiza la columna de interés. Sería un poco complicado ya que Row State Handler se ejecuta cada vez que hay un cambio en el estado de una fila, pasando los números de fila de las filas seleccionadas y no seleccionadas. Probablemente tendría que agregar condiciones para asegurarse de que la función solo se ejecute en ciertas circunstancias (por ejemplo, si se cambia el valor en la columna de destino). El beneficio es que evitará la necesidad de usar una función o un valor para verificar la columna de destino. Busque ejemplos en el índice de secuencias de comandos y la documentación.
Re: Fórmulas condicionales y texto libre en la misma columnaGracias, @Peter_Hersh ! No había pensado en usar recode. Sin embargo, imagino algunos desafíos, ya que mi conjunto de datos (y el flujo de trabajo del 'cliente') es más complejo de lo que he aludido:
1. Se ingresa una fila completa de datos antes de agregar una segunda fila. Por lo tanto, la secuencia de comandos (aunque sea un botón de reproducción simple) debería ejecutarse para cada fila y tendré que agregar algunas líneas para que no sobrescriba el texto sin signo de interrogación ingresado previamente (que imagino que es factible).
2. Hay varias relaciones de columna a columna en las que me gustaría aprovechar esta función (es decir, entre ColA y ColB, así como entre ColC y ColF, etc.), por lo que el usuario deberá ejecutar el script varias veces. veces para una fila determinada, así como saber cuándo reproducir el guión, etc., lo que parece un poco torpe. Alternativamente, podría reorganizar las columnas (ColA, ColC, ColB, etc.) o pedirle al usuario que salte de ColA a ColC, etc. para que el script se pueda ejecutar solo una vez por fila, pero estas opciones tampoco suenan muy fáciles de usar. .
Si cree que 'recodificar' es mi mejor solución, probablemente lo intentaré. ¡Gracias por tu contribución!
Re: Fórmulas condicionales y texto libre en la misma columna@Matt_Converse ¿Has probado a usar Recode?En su ejemplo, una silla sería de madera y la cama estaría en blanco.Puede ejecutar un script rápido para ejecutar esta recodificación y luego agregar una propiedad de verificación de lista.La verificación de la lista permitirá al usuario hacer clic con el botón derecho y seleccionar uno de los valores de la lista.Si usa el registro en JMP 16, capturará todos estos cambios, por lo que no tiene que crear una secuencia de comandos.Prueba esto a continuación.
//Make Data Table
New Table( "Example 2",
Add Rows( 7 ),
New Column( "Furniture",
Character,
"Nominal",
Set Values( {"Chair", "Bed", "Chair", "Bed", "Stool", "Stool", "Bed"} )
)
);
Wait (2);
// Recode column: Material
dt = Data Table( "Example 2" );
dt << Begin Data Update;
col1 = dt << New Column( dt:Furniture );
col1 << Set Name( "Material" );
dt << Move Selected Columns( {col1}, after( dt:Furniture ) );
dt << Recode Column(
dt:Furniture,
{Map Value(
_rcOrig,
{"Bed", "?", "Chair", "Wood", "Stool", "Metal"},
Unmatched( _rcNow )
)},
Update Properties( 1 ),
Target Column( col1 )
);
dt << End Data Update;
// Clear row selection
Data Table( "Example 2" ) << Clear Select;
// Change column list check: Material
Data Table( "Example 2" ):Material << List Check( {"?", "Metal", "Wood"} );
Re: Fórmulas condicionales y texto libre en la misma columnaGracias por la pronta respuesta, Pedro. Aprendí un poco más sobre las etiquetas de valor al mirarlo. Sin embargo, a menos que me esté perdiendo algo, ColB sigue siendo, en última instancia, una función de ColA. Necesitaré la opción para que ColB sea independiente de ColA en los casos en que ColB tenga una relación de uno a muchos con ColA.
Entonces, por ejemplo, digamos que ColA es "Tipo de mueble" y ColB es "¿De qué material están hechos los muebles?". Si el usuario ingresa "Silla" en ColA, entonces ColB se completa automáticamente con "Madera" porque sé a priori que las únicas sillas que tendrían serían de madera. Pero si ingresaron "Cama" en ColB, ColB se deja en blanco para que lo completen con "Madera" o "Metal" porque pueden tener cualquier tipo. Alternativamente, ColB podría atenuarse si colocan "Chair" en ColA (ya que sé qué ColB debería ser y solo estoy tratando de ahorrarles tiempo y evitar errores tipográficos), pero tampoco pude hacerlo funcionar desde También realicé esa operación con una fórmula.
Espero que esto sea un poco más claro. ¡Gracias!
Re: Fórmulas condicionales y texto libre en la misma columna@Matt_Converse , Buena pregunta.Aquí hay un ejemplo de algo similar a lo que preguntaste.Usé etiquetas de valor donde puedes incluir un rango.Si este valor cae en un rango específico, se mostrará como una etiqueta.Esto podría lograr lo que espera o al menos en parte.Puede ejecutar la verificación de la lista en la Col A, ya que es independiente y, si se encuentra fuera del rango deseado, también podría funcionar.De todos modos, échale un vistazo, hazme saber si tienes alguna pregunta.