다른 열의 그룹화를 기반으로 새 열 만들기안녕 모두,
다음 사양에 따라 "활성"또는 "바꾸기"를 반환하는 "상태"열을 새로 만들려고합니다 (예상 결과의 그림으로 "상태"열이있는 테이블의 일부).
각 TOOL 및 사이트는 시간 동안 다른 Sub_Tool을 대체 할 수 있으며 타임 스탬프가있는 여러 장치를 실행합니다. 특정 도구 및 사이트에 대한 가장 최근의 Sub_Tool은 상태 열에서 활성화되고 해당 도구 및 사이트에서 사용 된 모든 이전 Sub_Tool은 교체됨을받습니다.
첨부 된 예에서와 같이 동일한 Sub_Tool은 시간이 지남에 따라 반복 될 수 있지만 마지막 실행시에만 활성으로 표시되어야합니다.
실제 파일에는 많은 도구가 있으며 각 도구에는 많은 사이트가 있으므로 강력한 코딩이 필요합니다.
도와 주셔서 감사합니다.
다시 : 다른 열의 그룹화를 기반으로 새 열 만들기정의를 읽은 결과 36 행이 활성으로 간주되지만 28 행에서 35 행이 SubTool 저장 값을 갖는 것을 제외하고는 해당 행이 활성으로 표시되는 이유를 이해할 수 없습니다.
또는 마지막 SubTool이 도구 및 사이트에 사용 된 것을 찾아서 SubTool이 변경 될 때 모든 행을 활성으로 표시하는 간단한 문제입니다.
혼란스러워다시 : 다른 열의 그룹화를 기반으로 새 열 만들기안녕,
원래 테이블에는 Sub_Tool을 사용하여 통계를 계산할 다른 많은 열이 있으므로 마지막 행을 Acitve로 표시해야 할뿐만 아니라 최신 Sub_Tool이 실행 된 전체 배치를 표시해야합니다. 그렇습니다. 마지막 하위 도구가 도구 및 사이트에 사용 된 것을 찾은 다음 하위 도구가 변경 될 때 모든 행을 활성으로 표시합니다.
다시 : 다른 열의 그룹화를 기반으로 새 열 만들기다음은 아마도 새로운 열을 계산할 수있는 몇 가지 방법 중 하나입니다. 새 문자 열을 만들고 아래 수식을 새 열에 붙여 넣고 "Active2"에 대한 참조를 새로 만든 새 열의 이름으로 변경하십시오.
If( Row() > 1,
If( :TOOL != Lag( :TOOL ) | :Site != Lag( :Site ) | Row() == N Rows( Current Data Table() ),
TargetValue = :Sub_Tool[Row() - 1];
:Active2[Row() - 1] = "Active";
For( i = Row() - 2, i >= 1, i--,
If( :Sub_Tool[i] == TargetValue,
:Active2[i] = "Active",
:Active2[i] = "Replaced";
Break();
)
);
)
);
If( Row() == N Rows( Current Data Table() ),
"Active",
"Replaced"
);
다시 : 다른 열의 그룹화를 기반으로 새 열 만들기이 문제를 해결하는 데 시간을 내 주셔서 감사합니다. 제안 된 스크립트는 생성 된 Sub_Tool_Status 열에 다음과 같은 잘못된 의도를 나타냅니다.
1. 가장 최근의 행 값이 대체 됨 (첨부 된 파일 행 91이 노란색으로 표시됨)
2. 가장 최근 행이 비어 있습니다 (첨부 파일 마지막 행)
2. 교체 이전의 마지막 행만 여러 번 교체 한 경우 교체되고 이전 행을 업데이트하지 않는 경우 (두 개의 녹색 음영으로 표시된 첨부 파일)
다시 : 다른 열의 그룹화를 기반으로 새 열 만들기보다 완전한 테스트 파일과 초기 코드 테스트에 감사드립니다.
다음은 새로운 버전의 형식입니다.
If( Row() > 1,
If( :TOOL != Lag( :TOOL ) | :SITE != Lag( :SITE ) | Row() == N Rows( Current Data Table() ),
TargetValue = :SUB_TOOL[Row() - 1];
:Active2[Row() - 1] = "Active";
For( i = Row() - 1, i >= 1, i--,
If( :SUB_TOOL[i] == TargetValue,
:Active2[i] = "Active",
Break()
)
);
)
);
If( Row() == N Rows( Current Data Table() ),
"Active",
"Replaced"
);
"Active2"코드의 열 참조를 열에 제공하는 열 이름으로 변경해야합니다.
이제 당신에게 내 질문은 :
공식이 어떻게 작동하는지 이해합니까?
그렇지 않은 경우 코드를 연구하고 코드에 대한 질문을해야하므로 이해하고 향후 필요할 수있는 변경을 수행 할 수 있습니다.