행 선택 확장쉽게 식별할 수 있는 행을 둘러싼 특정 행 그룹을 선택하고 싶습니다. 아래 예시에서는 원하는 행을 캡처할 수 있었지만, 이제 원하는 데이터 블록을 얻으려면 해당 행을 위 11행, 아래 15행으로 확장해야 합니다.
Current Data Table() << Select where( Contains( As Column(2), "1st Thickness" );
자동화 및 스크립팅Re: 행 선택 확장안녕하세요, 사용할 수 있습니다
dt = current data table();
block of interest = (dt << get selected rows()) + -11::15;
dt << Select Rows( block of interest )
Re: 행 선택 확장Select Where를 사용하지 말고 Get Rows Where를 사용하세요.
1번째 두께 값이 있는 행의 행 번호가 반환됩니다.
그런 다음 Select Rows()를 사용하여 위의 11개 행과 아래의 15개 행을 선택합니다.
Re: 행 선택 확장호기
흥미로운 내용인데 "Index"에 대한 액세스 또는 평가에서 Index 인수가 발견되었습니다. ................................."라는 오류가 발생합니다.
감사해요
Re: 행 선택 확장@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 );
스크립트에 그냥 복사해서 붙여넣은 코드가 아니라, 제공된 코드를 연구하고, 그로부터 얻은 새로운 통찰력을 바탕으로 자신의 코드에 맞게 변형하는 방식으로 패러다임을 조금 바꾸는 것이 좋습니다.
Re: 행 선택 확장몇 가지 더 제안합니다
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: 행 선택 확장짐
이 방법은 작동하지만 행렬에서 처음 선택된 행에 대한 추가 행만 선택합니다. 처음 선택된 행 번호마다 반복을 설정하여 모든 행을 캡처해야 할까요?
Re: 행 선택 확장짐
반복 작업을 추가했더니 제가 원하는 결과를 얻을 수 있는 듯합니다.
감사해요
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: 행 선택 확장처음 메시지를 보니 단일 행 기준으로만 선택하려는 것 같습니다. 루핑은 확실히 가장 쉬운 옵션이며, 데이터에 따라 최적화 없이도 충분히 빠를 수 있습니다.
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);