Hola,
Estoy intentando ejecutar una serie de bucles anidados para uno a la vez para que los bucles internos se realicen una vez cada vez que se ejecuta el bucle externo.
Para dar un poco más de contexto, tengo un archivo PDF que tiene 58 páginas. Cada dos páginas es un documento individual que quiero separar y abrir una nueva tabla para usar el asistente de importación de texto (por lo tanto, 29 documentos combinados en un solo PDF). También quiero que los nombres de las columnas empiecen en la línea 32 y que los datos empiecen en la línea 33 de cada documento de dos páginas.
Para hacer esto, he anidado bucles en Inicio de nombres de columna y Inicio de datos en la secuencia de comandos del asistente de texto. Hay 134 líneas entre los nombres de las columnas en cada uno de los 29 documentos y, posteriormente, 134 líneas entre las cuales los datos comienzan en cada uno de los 29 documentos de 29 páginas.
También hay un bucle for alrededor de la secuencia de comandos completa para abrir el archivo principal 29 veces, y los subsiguientes para los bucles eligen qué línea comenzar y hacen una tabla para cada documento en el archivo.
¿Cómo utilizaría el comando Romper o Continuar para que el script ejecute el primer bucle for una vez, pase al siguiente for bucle y lo ejecute una vez, luego continúe con el script ejecutando cada bucle for solo una vez antes de comenzar de nuevo en la parte superior ¿El archivo y pasar por la siguiente iteración del bucle for? Si bien también tiene cada uno de los bucles for, recuerde la iteración pasada para mantener el recuento de líneas donde debería estar.
Gracias,
Mate
//opens text file using text wizard
for(i=1, i<=29, i++,
Open(
"C:\Users\file.txt",
columns(
New Column( "Parameters", Character, "Nominal" ),
New Column( "Results", Character, "Nominal" ),
New Column( "Units", Character, "Nominal" ),
New Column( "Uncertainty", Character, "Nominal" ),
New Column( "Spec", Character, "Nominal" ),
New Column( "Methods", Character, "Nominal" ),
New Column( "c000007", Character, "Nominal" ),
New Column( "c000008", Character, "Nominal" ),
New Column( "c000009", Character, "Nominal" ),
New Column( "c0000010", Character, "Nominal" ),
New Column( "c0000011", Character, "Nominal" ),
New Column( "c0000012", Character, "Nominal" ),
New Column( "c0000013", Character, "Nominal" ),
New Column( "c0000014", Character, "Nominal" ),
New Column( "c0000015", Character, "Nominal" ),
New Column( "c0000016", Character, "Nominal" ),
New Column( "c0000017", Character, "Nominal" ),
New Column( "c0000018", Numeric, "Continuous", Format( "Best", 10 ) )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Space, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start(
for(q=1, q<=29, q++,
(32*q)+for(p=135, p<29, p++,
(show(p));
);
);
),
Data Starts(
for(t=1, t<=29, t++,
(33*t)+for(s=135, s<29, s++,
(show(s));
);
);
),
Lines To Read( "135" ),
Year Rule( "20xx" )
)
));Prueba algo como esto
filename = Save Text File( "$temp\x.csv", "a,b,c
1,2,3
a,b,c
2,3,4
a,b,c
3,4,5
" );
dtlist = {};
For( i = 1, i <= 3, i += 1,
names = (i - 1) * 2 + 1;
data = names + 1;
dtlist[i] = Open(
filename,
columnNamesStart( names ),
DataStarts( data ),
Lines To Read( 1 )
);
dtlist[i] << setname( "segment" || Char( i ) );
);
Tres tablas con nombres establecidos desde JSL
@MattP ,
Intenté revisar su código y aquí hay un par de cosas que noté:

Las secciones resaltadas realmente no tienen mucho sentido para mí. Recomendaría un enfoque diferente si está dispuesto a probarlo. Ejecute su bucle for y deje que lea todos los datos en la tabla de datos. Si bien puede ser contraintuitivo leer más datos de lo necesario, creo que tanto por la eficiencia como por la claridad de su código, sería mucho más fácil postprocesar los datos que se leen en lugar de limitar los contenidos. . Por lo tanto, mantenga su bucle exterior y elimine los bucles internos en las secciones "Columna" y "Datos". Una vez que tenga los datos, tomemos una tabla de datos de ejemplo y veamos cómo puede filtrar lo que desea. Déle un tiro y pídale ayuda.