Holen Sie sich Zeilen zwischen Zeichen aus einer Spalte und verschieben Sie dann den anderen Spaltenwert (nur die ausgewählte Zeile) in eine andere SpalteHallo,
Ich möchte mehrere Spaltenwerte ausgewählter Zeilen in andere Spalten derselben Tabelle verschieben oder kopieren, wie im Bild unten
Die relevanten Zeilen beginnen immer mit :Item == "Start" und enden mit :Item == "Werte", die Gesamtzahl der Zeilen kann jedoch unterschiedlich sein. Ich möchte die Werte aus Spalte 1 und Spalte 2 der relevanten Zeilen in Spalte 3 und Spalte 4 kopieren, einfügen oder verschieben. Mein aktueller Gedanke ist, manuell eine Liste zu erstellen, die die Zeichenfolge von "Start" bis "Werte" unter :Item enthält. Anschließend wird eine Spalte mit der Bezeichnung "1" erstellt, wenn :Item die Liste enthält. Von dort aus setze ich Spalte 3 == Spalte 1 und Spalte 4 = Spalte 2.
Die Zeilen zwischen „Start“ und „Werten“ können jedoch unterschiedlich sein. Ich frage mich, ob jemand eine bessere Methode kennt, um die Aufgabe zu erledigen, ohne die Liste manuell erstellen zu müssen, sondern basierend auf „Start“ und „Werten“, um die Zeilen zu finden.
Originaltabelle

nach dem Umzug

Automatisierung und SkriptingBetreff: Zeilen zwischen Zeichen aus einer Spalte abrufen und dann den anderen Spaltenwert (nur die ausgewählte Zeile) in eine andere Spalte verschiebenIch vermute, dass es einfacher wäre, das Ausschneiden und Einfügen manuell durchzuführen, als Start- und Stopplisten erstellen zu müssen.
Betreff: Zeilen zwischen Zeichen aus einer Spalte abrufen und dann den anderen Spaltenwert (nur die ausgewählte Zeile) in eine andere Spalte verschiebenDer Zweck besteht jedoch in der täglichen Automatisierung und die Zeilen zwischen Start und Werten können sich von Zeit zu Zeit ändern.
Betreff: Zeilen zwischen Zeichen aus einer Spalte abrufen und dann den anderen Spaltenwert (nur die ausgewählte Zeile) in eine andere Spalte verschiebenDann würde ich es so einfach wie möglich machen und eine Konfigurationstabelle erstellen, etwa wie

Dadurch wird Ihr JSL ziemlich einfach, etwa so:
Names Default To Here( 1 );
dt = Current Data Table();
dtConfig = Data Table( "Config" );
For( i = 1, i <= N Rows( dtConfig ), i++,
frCol = dtConfig:From Column[i];
toCol = dtConfig:To Column[i];
For( k = dtConfig:Start Row[i], k <= dtConfig:End Row[i], k++,
Column( dt:toCol )[k] = Column( dt, FromCol )[k];
If( dtConfig:Move_Copy == "Move",
Column( dt, FromCol ) = ""
);
);
);
Betreff: Zeilen zwischen Zeichen aus einer Spalte abrufen und dann den anderen Spaltenwert (nur die ausgewählte Zeile) in eine andere Spalte verschiebenIch denke, Sie können es sicher ohne Konfigurationstabelle tun. Diese prüft, ob Spalte 1 einen Wert in der Startzeile enthält, bevor etwas überschrieben wird. Ja, ich verwende gerne For Each().
Names Default To Here( 1 );
starts = Loc( dt:Item << Get Values, "start" );
ends = Loc( dt:Item << Get Values, "values" );
For Each( {v, i}, starts,
If( :Col 1[v] != "",
For Each( {val, idx}, v :: ends[i],
:Col 3[val] = :Col 1[val];
:Col 4[val] = :Col 2[val];
:Col 1[val] = "";
:Col 2[val] = "";
)
)
);