So teilen Sie Mehrwortwerte und ordnen sie in alphabetischer Reihenfolge neu anIch habe eine Spalte mit Zeichenwerten, die aus zwei Buchstaben bestehen. Einige sind Einzelwerte und andere sind mehrere Werte, die durch das Trennzeichen "/" getrennt sind. Das Problem ist, dass die mehrwertigen Werte nicht in alphabetischer Reihenfolge sind.
Ich möchte jede Zeile durchlaufen und die Mehrfachwerte teilen und sie in alphabetischer Reihenfolge neu anordnen und den neuen "Wert" in eine neue Spalte einfügen. Einzelne Werte sollten nur "kopiert" und Nullen als Nullen belassen werden.
Dies ist weit über meinem Kopf und ich freue mich über Vorschläge, Hinweise oder Leselisten, die mir helfen, dieses Problem zu beheben.
Vielen Dank!
Aktuelle Daten NEUE Daten
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])),
),
);SkriptingBetreff: So teilen Sie Mehrwortwerte und ordnen sie in alphabetischer Reihenfolge neu anHier ist eine Formel, die mit Ihrer Beispieldatentabelle funktioniert.Im Anhang befindet sich eine Datentabelle mit der angewendeten Formel
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]
);
)Betreff: So teilen Sie Mehrwortwerte und ordnen sie in alphabetischer Reihenfolge neu anEs kommt nicht oft vor, dass ich mich verbessern kann @ txnelson , aber ich kann es auf eine einzeilige Formel bringen:
Concat Items( Sort List( Words( :Current data, "/" ) ), "/" )
Wörter() Erstellt eine Liste von Wörtern, indem die Spalte mit einem "/" als Trennzeichen in Wörter unterteilt wird.
Sortierliste() sortiert die Liste alphabetisch
Concat Items () Verkettet die Elemente in der Liste mit dem "/", um die Elemente zu trennen, zu einer einzigen Zeichenfolge.

Betreff: So teilen Sie Mehrwortwerte und ordnen sie in alphabetischer Reihenfolge neu anSehr sehr nettBetreff: So teilen Sie Mehrwortwerte und ordnen sie in alphabetischer Reihenfolge neu ansehr geehrter @ txnelson und @ Jeff_Perkinson Vielen Dank für Ihre Antworten; Eine großartige Lektion über Loops und die andere eine umwerfende Einzeiler.
Ich werde beides zu meiner JSL-Tasche hinzufügen.
Freundliche Grüße.
Betreff: So teilen Sie Mehrwortwerte und ordnen sie in alphabetischer Reihenfolge neu anFügt diese Formel zusätzlich zur Segmentierung und Sortierung die duplizierten Werte nach der Segmentierung hinzu und entfernt sie und behält nur die Felder bei, die sich nicht wiederholen?

Freundliche Grüße.
Betreff: So teilen Sie Mehrwortwerte und ordnen sie in alphabetischer Reihenfolge neu anNein, keine der angegebenen Lösungen entfernt Duplikate.Diese Anforderung war nicht Teil des ursprünglichen Antrags.
Mit der Funktion Contains () können Sie Elemente in einer Liste überprüfen, um festzustellen, ob eine Übereinstimmung gefunden wurde.Ich benutze es ziemlich oft.
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);
Alles, was getan werden muss, ist, diesen Code in die eine oder andere vorgeschlagene Lösung einzufügen.
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;