こんにちは、
外側のforループが実行されるたびに内側のforループが発生するように、一連のネストされたforループを一度に1つずつ実行しようとしています。
もう少し詳しく説明すると、58ページのPDFファイルがあります。2ページごとに、テキストインポートウィザードを使用するための新しいテーブルを別々に開いて開きたい(1つのPDFに29個のドキュメントがサンドイッチされている)。また、各2ページの文書の列名を32行目から開始し、データを33行目から開始するようにします。
これを行うには、テキストウィザードスクリプトの[列名の開始]と[データの開始]にforループを入れ子にしました。29個の各文書の列名の間には134行があり、それに続く134行の間には、長さ29、2ページの文書のそれぞれでデータが始まります。
メインファイルを29回開くためのスクリプト全体を囲むforループもあります。後続のforループでは、開始する行を選択し、ファイル内にサンドイッチされた各ドキュメントのテーブルを作成します。
BreakコマンドまたはContinueコマンドを使用して、スクリプトに最初のforループを1回実行させ、次のforループに移動させて1回実行させ、その後各forループを1回だけ実行するスクリプトを続けます。ファイルとforループの次の反復を通過しますか?それぞれのforループは、行カウントをあるべき位置に保つために過去の繰り返しを覚えています。
ありがとうございました、
マット
//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" )
)
));このようなことを試してください
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 ) );
);
JSLから設定された名前を持つ3つのテーブル
@マット 、
私はあなたのコードを調べようとしました、そしてここに私が気づいたことがいくつかあります:

ハイライトされたセクションは、私にとってあまり意味がありません。試しても構わない場合は、別の方法をお勧めします。forループを実行して、すべてのデータをデータテーブルに読み込むようにします。必要以上に多くのデータを読むのは直観的ではないかもしれませんが、コードの効率と明快さの両方から考えると、入ってくるデータを制限するのではなく、読み込まれるデータを後処理するほうがはるかに簡単です。。だから、あなたの外側のループを保ち、"Column"と "Data"セクションの内側のループを取り除いてください。データを入手したら、データテーブルの例を見て、必要なものを除外する方法を確認しましょう。それに打撃を与えて、どんな助けのためにでも中へ入れてください。