Obtener filas entre caracteres de una columna y luego mover el valor de otra columna (solo la fila seleccionada) a otra columnaHola,
Quiero mover o copiar y pegar varios valores de columnas de filas seleccionadas a otras columnas de la misma tabla como se muestra en la imagen a continuación.
Las filas de interés siempre empiezan desde :Item == "start" hasta :Item == "values", pero el total de filas puede ser diferente. Quiero copiar y pegar o mover el valor de las columnas 1 y 2 de las filas de interés a las columnas 3 y 4. Mi idea actual es crear manualmente una lista que incluya la cadena desde el inicio hasta los valores en :Item y luego crear una columna etiquetada como "1" si :Item contiene una lista. A partir de ahí, establecer la columna 3 == Col 1 y la columna 4 = Col 2.
Sin embargo, las filas entre el inicio y los valores pueden ser diferentes. Me pregunto si alguien conoce un método mejor para realizar la tarea sin tener que crear la lista manualmente, sino basándose en el "inicio" y los "valores" para encontrar las filas.
mesa original

después de mudarse

Automatización y scriptingRe: obtener filas entre caracteres de una columna y luego mover el valor de otra columna (solo la fila seleccionada) a otra columnaSospecho que sería más fácil cortar y pegar manualmente en lugar de tener que crear listas de inicio y fin.
Re: obtener filas entre caracteres de una columna y luego mover el valor de otra columna (solo la fila seleccionada) a otra columnapero el propósito es la automatización diaria y las filas entre el inicio y los valores pueden cambiar de vez en cuando.
Re: obtener filas entre caracteres de una columna y luego mover el valor de otra columna (solo la fila seleccionada) a otra columnaLuego lo haría lo más sencillo posible y crearía una tabla de configuración similar a

Lo que hace que tu JSL sea bastante simple, algo así como:
Names Default To Here( 1 );
dt = Current Data Table();
dtConfig = Data Table( "Config" );
For( i = 1, i <= N Rows( dtConfig ), i++,
frCol = dtConfig:From Column[i];
toCol = dtConfig:To Column[i];
For( k = dtConfig:Start Row[i], k <= dtConfig:End Row[i], k++,
Column( dt:toCol )[k] = Column( dt, FromCol )[k];
If( dtConfig:Move_Copy == "Move",
Column( dt, FromCol ) = ""
);
);
);
Re: obtener filas entre caracteres de una columna y luego mover el valor de otra columna (solo la fila seleccionada) a otra columnaCreo que puedes hacerlo sin problemas sin una tabla de configuración. Esto verifica que la columna 1 contenga un valor en la fila inicial antes de sobrescribir nada. Sí, me gusta usar For Each().
Names Default To Here( 1 );
starts = Loc( dt:Item << Get Values, "start" );
ends = Loc( dt:Item << Get Values, "values" );
For Each( {v, i}, starts,
If( :Col 1[v] != "",
For Each( {val, idx}, v :: ends[i],
:Col 3[val] = :Col 1[val];
:Col 4[val] = :Col 2[val];
:Col 1[val] = "";
:Col 2[val] = "";
)
)
);