여러 단어 값을 분할하고 알파벳 순서로 다시 정렬하는 방법두 글자 약어 인 문자 값이있는 열이 있습니다. 일부는 단일 값이고 다른 일부는 구분 기호 "/"로 구분 된 여러 값입니다. 문제는 다중 값 값이 알파벳 순서가 아니라는 것입니다.
각 행을 반복하고 다중 값을 분할하고 알파벳순으로 다시 정렬하고 새 "값"을 새 열에 삽입하려고합니다. 단일 값은 "복사 됨"이어야하며 null은 null로 남습니다.
이것은 내 머리 위에 있으며이 문제를 해결하는 데 도움이되는 제안 포인터 또는 읽기 목록에 감사드립니다.
감사!
현재 데이터 NEW 데이터
AB AB
CD CD
EF EF
CD / AB AB / CD
null null
EF / AB / CD AB / CD / EF
col = ("Really | Long | and | Boring | Column | Name");
Vals = As Column (col) << Get Values; // Get Values
dt = New Column ("NewAbs", Character, "Nominal" ); //New column for NEW DATA
rows = N rows (dt); // Total number of rows to iterate
for(i = 1 , i <= rows, i++,
if(rowVal (Contains (Vals[i], "/")), // check if is multi-value i.e. AB/DF
rowVal = Words(Vals[i],"/"); // Words will split multi-values at "/"
sval = Sort List(Eval List(rowVal) ); // sort the character values
For(i = 1, i <= N Items (sVal), i++,
newVal = sVal[i];
conCat = Concat Items ( newVal[i] || "/"|| newVal[i+i])
),
Insert Into (dt, conCat[i]),
if(rowVal (!Contains (Vals[i], "/")), // if is NOT multi-value i.e. AB/DF
Insert Into (dt, rowVal[i])),
),
);스크립팅Re : 여러 단어 값을 분할하고 알파벳 순서로 다시 정렬하는 방법다음은 샘플 데이터 테이블에서 작동하는 공식입니다.수식이 적용된 데이터 테이블이 첨부되어 있습니다.
If( Contains( :Current data, "/" ) == 0,
x = :Current data,
i = 1;
theList = {};
While( Word( i, :Current data, "/" ) != "",
Insert Into( theList, Word( i, :Current data, "/" ) );
i++;
);
theList = Sort List( theList );
x = theList[1];
For( i = 2, i <= N Items( theList ), i++,
x = x || "/" || theList[i]
);
)Re : 여러 단어 값을 분할하고 알파벳 순서로 다시 정렬하는 방법개선 할 수있는 경우는 자주 없습니다. 헉헉 하지만 한 줄 공식으로 내려갈 수 있습니다.
Concat Items( Sort List( Words( :Current data, "/" ) ), "/" )
말() 구분 기호로 "/"를 사용하여 열을 단어로 분리하여 단어 목록을 만듭니다.
정렬 목록 () 목록을 알파벳순으로 정렬합니다.
Concat 항목 () 항목을 구분하기 위해 "/"를 사용하여 목록의 항목을 단일 문자열로 연결합니다.

Re : 여러 단어 값을 분할하고 알파벳 순서로 다시 정렬하는 방법아주 아주 좋은Re : 여러 단어 값을 분할하고 알파벳 순서로 다시 정렬하는 방법소중한 헉헉 과 안녕하세요. 답변 해 주셔서 감사합니다. 0ne 루프에 대한 훌륭한 교훈이고 다른 하나는 한 줄짜리 마음이 흔들리는 것입니다.
두 가지 모두 JSL 가방에 추가하겠습니다.
친애하는.
Re : 여러 단어 값을 분할하고 알파벳 순서로 다시 정렬하는 방법세분화 및 정렬 외에도이 수식은 세분화 후 중복 된 값을 추가 및 제거하고 반복되지 않는 필드 만 유지합니까?

친애하는.
Re : 여러 단어 값을 분할하고 알파벳 순서로 다시 정렬하는 방법아니요, 지정된 솔루션이 중복 항목을 제거하지 않습니다.이 요구 사항은 원래 요청의 일부가 아닙니다.
Contains () 함수는 목록의 항목 전체를 검사하여 일치 항목이 있는지 확인할 수 있습니다.나는 그것을 아주 자주 사용합니다.
Names Default To Here( 1 );
theList = {"AB", "AB", "CD", "EF"};
x = {};
Insert Into( x, theList[1] );
For( i = 2, i <= N Items( theList ), i++,
If( Contains( x, theList[i] ) == 0,
Insert Into( x, theList[i] )
)
);
show(x);
따라서해야 할 일은이 코드를 하나 또는 다른 제안 된 솔루션에 배치하는 것입니다.
x = :Current data;
If( Contains( x, "/" ) > 0,
theList = Words( x, "/" );
theList = Sort List( theList );
x = {};
Insert Into( x, theList[1] );
For( i = 2, i <= N Items( theList ), i++,
If( Contains( x, theList[i] ) == 0,
Insert Into( x, theList[i] )
)
);
x = Concat Items( x, "/" );
);
x;