obtenir les lignes entre les caractères d'une colonne, puis déplacer l'autre valeur de colonne (ligne sélectionnée uniquement) vers une autre colonneSalut,
Je souhaite déplacer ou copier-coller plusieurs valeurs de colonnes de lignes sélectionnées vers d'autres colonnes du même tableau, comme dans l'image ci-dessous.
Les lignes concernées commencent toujours par :Item == "start" jusqu'à :Item == "values", mais le nombre total de lignes peut être différent. Je souhaite copier-coller ou déplacer les valeurs des colonnes 1 et 2 des lignes concernées vers les colonnes 3 et 4. Je pense actuellement créer manuellement une liste incluant la chaîne de caractères de start à values sous :Item, puis créer une colonne étiquetée « 1 » si :Item contient la liste. Ensuite, je définis les colonnes 3 == et 1 et 4 = 2.
Cependant, les lignes entre le début et les valeurs peuvent être différentes. Je me demande si quelqu'un connaît une meilleure méthode pour effectuer cette tâche sans avoir à créer manuellement la liste, mais en se basant sur les lignes « début » et « valeurs » pour trouver les lignes.
tableau original

après avoir déménagé

Automatisation et scriptsRe : récupérer les lignes entre les caractères d'une colonne, puis déplacer la valeur d'une autre colonne (ligne sélectionnée uniquement) vers une autre colonneJe pense qu'il serait plus facile de faire manuellement le copier-coller plutôt que de devoir créer des listes de démarrage et d'arrêt.
Re : récupérer les lignes entre les caractères d'une colonne, puis déplacer la valeur d'une autre colonne (ligne sélectionnée uniquement) vers une autre colonnemais le but est l'automatisation quotidienne et les lignes entre le début et les valeurs peuvent changer de temps en temps.
Re : récupérer les lignes entre les caractères d'une colonne, puis déplacer la valeur d'une autre colonne (ligne sélectionnée uniquement) vers une autre colonneEnsuite, je le rendrais aussi simple que possible et créerais une table de configuration quelque chose comme

Ce qui rend votre JSL assez simple, quelque chose comme :
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 ) = ""
);
);
);
Re : récupérer les lignes entre les caractères d'une colonne, puis déplacer la valeur d'une autre colonne (ligne sélectionnée uniquement) vers une autre colonneJe pense que vous pouvez le faire en toute sécurité sans table de configuration. Cette méthode vérifie que la colonne 1 contient une valeur dans la ligne de début avant d'écraser quoi que ce soit. Oui, j'aime utiliser 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] = "";
)
)
);