No se encuentra en el índice del script, termine con JSL. ¡Muchas gracias!

Iwx228 muestra un elemento interesante de la lista de deseos, aunque el ejemplo proporcionado no es el caso de uso típico de JSL, donde hay filas seleccionadas por el usuario.
Excel VBA tiene un método de hoja de cálculo (función) para hacer un reemplazo global.Las funciones Substitute() y Substitute Into() de JMP satisfarían las necesidades de este usuario sin la sobrecarga de las expresiones regulares, ya que no se requería un patrón, solo un reemplazo global. Todo lo que falta es obtenerlo y aplicarlo a las selecciones actuales. La sintaxis lógica sería
dt << Reemplazar( searchStr, replaceStr, argumentos para selecciones seleccionar filas y columnas seleccionadas o todas, o...)
A continuación se muestra un script prototipo llamado ReplaceCell() con ejemplos de uso.
Algunos elementos a tener en cuenta:
- Se aplica a los datos actuales. Se aborta si no hay una tabla de datos actual.
- Cancela si no hay columnas seleccionadas. Si no hay filas seleccionadas, se utilizan todas las filas de las columnas seleccionadas.
- Tal como está escrito, esta función solo se aplica a las columnas de caracteres; se puede extender a columnas numéricas, usando las funciones char() y num().
- Se reemplaza por fila, por lo que el bucle ocurre una vez.
- Esto podría haberse hecho por columna bastante rápido con LFunc() que publiqué anteriormente, pero quería mantener esto simple.
- Utilice Incluir() para JSL. No es necesario convertirlo en un complemento ya que CTRL + F ya lo hace
ReplaceCell = Function({src,rpl},{cdt, scol, srow, i, j, val},
if(ntable()>0, cdt=current data table(), throw("no table available"));
scol = cdt << get selected columns;
if(nitems(scol) ==0, throw("no columns are selected...aborting"));
srow = cdt << get selected rows();
if (nrow(srow)==0, srow = Transpose(1::nrow(cdt)) ); //if no rows are selected, assume the entire column.
for(i=1, i<=nrow(srow), i++,
for(j=1, j<=nitems(scol), j++,
val = scol[j][srow[i]];
if( IsString(val), scol[j][srow[i]] = Substitute(val, src, rpl) )
);
)//end for i
); //end function
//test cases create a new table with 2 selected columns
ndt = New Table( "Test 1",
Add Rows( 10 ),
New Column( "A",
Character,
"Nominal",
Set Values(
{"A7", "B7", "C7", "D7", "E7", "F7", "G7", "A9", "A79", "A707"}
)
),
New Column( "B",
Character,
"Nominal",
Set Values(
{"M7", "M77", "M07", "MX7", "E7", "E2", "E3", "F9", "G27", "M99"}
)
)
);
//replace all 7's with 1's
ReplaceCell("7","1"); //aborts no selected columns
ndt:A << set selected(1);
ndt:B << set selected(1);
//replace all 7's with 1's
ReplaceCell("7","1");
ndt << bring window to front;
//now try it with selected rows
ndt << select rows([1,2,4,7,9,10]);
ReplaceCell("1","6");
ndt << bring window to front;Esas no son todas las formas en que se puede codificar en JSL para lograr lo que desea, pero la sugerencia de Ian es lo que también habría sugerido como solución.
Este es el resultado de la sustitución en el caso de "Coincidir con el valor de toda la celda", la casilla de verificación múltiple no está seleccionada. ¡Gracias!

Si entiendo correctamente, considere usar la expresión JSL 'Match()'. Generé el siguiente código usando 'Cols > Recode':

e inspeccionando el JSL para la columna de fórmula resultante. Y, 'sí', JSL es muy diferente de VBA. Debe buscar en 'Ayuda > Libros > Guía de secuencias de comandos' y/o considerar algún tipo de capacitación.
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Wait(3);
dt << New Column( "Age 2",
Character,
"Ordinal",
Formula(
Match( :age,
12, "Twelve",
13, "Thirteen",
14, "Fourteen",
15, "Fifteen",
16, "Sixteen",
17, "Seventeen",
Format( :age, "Fixed Dec", 5, 0 )
)
)
);Si este es el nuevo caso, este JSL no es muy eficiente. ¿Se puede mejorar el código para la nueva instancia? ¡Gracias!

Esta es un forma de hacerlo
dt = Current Data Table();
dt:class[dt << get rows where( dt:class == "A1" )] = "A9";
Intenté escribir JSL de una manera que solo funciona con sustituciones perfectamente combinadas, pero si no desea reemplazar solo algunos caracteres, ¿cómo escribe JSL? ¡Gracias!

podrías usar subíndice de la tabla de datos :
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Wait(3);
maleRows = Loc(dt[0, "sex"], "M");
dt[maleRows, "sex"] = "boy";