je suis d'accord avec @julien en ce sens que je ne comprends pas pourquoi vous avez un tel besoin, mais voici les étapes qui vous permettraient de le faire de manière interactive.
- Copiez toutes les valeurs de la colonne 1 dans le tampon de collage.
- Faites un clic droit sur l'une des lignes de la colonne rowstate (la colonne avec les numéros de lignes) et sélectionnez "Ajouter des lignes"
- Dans la boîte de dialogue Ajouter des lignes, sélectionnez 6 lignes à ajouter à la fin.
- Accédez à l'en-tête de colonne vide à côté de l'en-tête de la première colonne, cliquez avec le bouton droit de la souris et sélectionnez "Nouvelles colonnes".
- Dans la boîte de dialogue Nouvelles colonnes, indiquez que vous souhaitez ajouter 6 colonnes.
- Une fois les colonnes créées, accédez à la deuxième cellule de la première nouvelle colonne et collez les valeurs du tampon de collage dans la cellule. Il copiera toutes les données en commençant par la cellule (ligne) 2.
- Répétez cette opération pour chaque nouvelle colonne, en descendant d'une ligne pour chaque nouvelle colonne.
Vous avez déjà deux bonnes solutions (et une désignée comme solution), mais il existe un autre moyen interactif rapide de le faire, que les gens oublient parfois. Sélectionnez la colonne d'origine et cliquez avec le bouton droit de la souris sur l'en-tête de colonne en sélectionnant Nouvelle formule de colonne> Ligne> Plusieurs décalages. Dans la boîte de dialogue, indiquez 1 dans le premier décalage et 6 dans le dernier décalage.
salut @WernerL ,
Vous trouverez ci-dessous un code pour le faire (écriture de valeurs ou de formules de colonnes), mais puis-je vous demander, pourquoi devez-vous créer un tableau comme celui-ci? Si vous devez effectuer certaines opérations ligne par ligne avec une valeur dans une ligne précédente d'une colonne précédente, il existe des méthodes plus efficaces que la création explicite de ces colonnes de décalage.
Ce formulaire écrit des valeurs:
dt = Open("$SAMPLE_DATA\Big Class.jmp");
baseCol = Column("height");
nCopies = 6;
For( i = 1, i <= nCopies, i++,
spacerMat = J( i, 1, . );
valuesMat = spacerMat |/ Eval( baseCol << Get Values );
New Column( "Copy " || char(i), Numeric, "Continuous", Set Values( valuesMat ) );
);
Ce formulaire écrit des formules de colonne:
dt = Open("$SAMPLE_DATA\Big Class.jmp");
baseCol = Column("height");
nCopies = 6;
For( i = 1, i <= nCopies, i++,
Eval(Substitute( Expr( New Column( "Copy " || Char( i ), Numeric, "Continuous", Formula( Lag( Subscript(xxCol,row()), i ) ) ) ), Expr( i ), i, expr(xxCol), baseCol ))
);
J'espère que cela vous aide à démarrer!
@julien
// Edition 24/11/19: correction de la version de la formule de colonne pour substituer correctement la colonne définie au début du script dans la formule de colonne
Bonjour JMP Community, je recherche une solution pour faciliter la copie, en une fois, d’une colonne plusieurs fois (dans l’exemple ci-dessous que j’ai choisi 6 fois), mais toutes les données doivent être déplacées d’une ligne vers le bas avec chaque nouvelle colonne copiée. établi? Merci de votre aide!