Expandir selección de filasQuiero seleccionar un grupo específico de filas que rodean una fila que puedo identificar fácilmente. En el ejemplo siguiente, puedo capturar la fila de interés, pero ahora necesito expandirla 11 filas arriba y 15 filas abajo para obtener el bloque de datos de interés.
Current Data Table() << Select where( Contains( As Column(2), "1st Thickness" );
Automatización y scriptingRe: Expandir selección de filasHola, puedes usar
dt = current data table();
block of interest = (dt << get selected rows()) + -11::15;
dt << Select Rows( block of interest )
Re: Expandir selección de filasNo utilice Seleccionar dónde, utilice Obtener filas dónde
Devolverá el número de fila de la fila que tiene su primer valor de grosor.
Luego use Seleccionar filas() para seleccionar las 11 filas de arriba y las 15 filas de abajo
Re: Expandir selección de filasHogi
Parece interesante pero me da un error "Argumento de índice en el acceso o evaluación de 'Índice',.................................."
Gracias
Re: Expandir selección de filasEl enfoque de @hogi es correcto. La sintaxis no.
Aquí está mi enfoque
dt = current data table();
block of interest = (dt << get selected rows())[1];
block of interest = index(block of interest-11,block of interest+15);
dt << Select Rows( block of interest );
Te sugiero que cambies un poco tu paradigma para no contar con obtener código que simplemente cortas y pegas en tu script, sino que estudies el código proporcionado y luego lo moldees en tu código, dados los nuevos conocimientos que proporciona.
Re: Expandir selección de filasAlgunas sugerencias más
Names Default To Here(1);
dt = Current Data Table();
Try(
r = (dt << get selected rows())[1];
dt << Select Where(r - 11 <= Row() <= r + 15);
);
Names Default To Here(1);
below = 11;
above = 15;
dt = Current Data Table();
r = dt << Get Selected Rows();
If(N Items(r) != 1,
Throw("Incorrect amount of rows selected");
);
rows_of_interest = Max(1, r - below)::Min(N Rows(dt), r + above);
dt << Select Rows(rows_of_interest);
Write();
Re: Expandir selección de filasJim
Esto funciona, pero solo selecciona las filas adicionales de la primera fila seleccionada en la matriz. Supongo que debería configurar una iteración para cada número de fila seleccionado inicialmente para capturarlas todas.
Re: Expandir selección de filasJim
Agregué iteración y parece que estoy obteniendo lo que busco.
Gracias
dt = current data table();
Current Data Table() << Select where( Contains( As Column(2), "1st Thickness" ));
sel_rows = Current Data Table() << Get Rows where( Contains( As Column(2), "1st Thickness" ));
j=1;
For( i = 1, i <= N Items( sel_rows ), i++,
block_of_interest = (dt << get selected rows())[j];
block_of_interest = index(block_of_interest-11,block_of_interest+15);
dt << Select Rows( block_of_interest );
j=j+27;
);
Re: Expandir selección de filasSegún tu mensaje inicial, parecía que solo querías seleccionar una sola fila. El bucle es sin duda la opción más sencilla y, según tus datos, podría ser bastante rápido sin necesidad de optimizar.
Names Default To Here(1);
dt = Current Data Table();
selrows = dt << get selected rows();
For Each({r}, selrows,
dt << Select Where(r - 11 <= Row() <= r + 15, current selection("extend"));
);
wait(0);
Y una opción un poco más complicada
Names Default To Here(1);
dt = Current Data Table();
selrows = dt << get selected rows();
rows_of_interest = {[]};
For Each({r}, selrows,
rs = Max(1, r - 11)::Min(N Rows(dt), r + 15);
Insert Into(rows_of_interest, rs`);
);
Substitute Into(rows_of_interest, Expr(List), Expr(V Concat));
dt << select rows(rows_of_interest);
wait(0);