展開行選擇我想選擇一組圍繞我可以輕鬆識別的行的特定行。在下面的例子中,我能夠捕獲感興趣的行,現在我需要將其擴展至上方 11 行和下方 15 行以獲得感興趣的資料區塊。
Current Data Table() << Select where( Contains( As Column(2), "1st Thickness" );
自動化和腳本回覆:擴充行選擇你好,你可以使用
dt = current data table();
block of interest = (dt << get selected rows()) + -11::15;
dt << Select Rows( block of interest )
回覆:擴充行選擇不要使用 Select Where,而要使用 Get Rows Where
它將傳回具有第一個厚度值的行的行號,
然後使用 Select Rows() 選擇上面的 11 行和下面的 15 行
回覆:擴充行選擇霍吉
看起來很有趣,但給了我一個錯誤“訪問或評估‘索引’時的索引參數,...............................”
謝謝
回覆:擴充行選擇@hogi 的方法是正確的。語法不是。
這是我的方法
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 );
我建議您稍微改變一下您的範式,不要指望獲得只需剪切並粘貼到腳本中的程式碼,而是研究所提供的程式碼,然後根據它提供的新見解將其融入您的程式碼中。
回覆:擴充行選擇還有一些建議
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();
回覆:擴充行選擇吉姆
這是可行的,但它只選擇矩陣中第一個選定行的附加行。我想我應該為每個最初選擇的行號設定一個迭代來捕獲它們全部?
回覆:擴充行選擇吉姆
我添加了迭代並且似乎得到了我想要的結果。
謝謝
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;
);
回覆:擴充行選擇根據您的初始訊息,似乎您只想基於單行進行選擇。循環絕對是最簡單的選擇,而且根據您的數據,它可能足夠快而無需任何優化。
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);
還有更複雜的選項
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);