Référencement d'une colonne par numéro de colonne dans une formule dans une boucle ForSalut tout le monde,
J'essaie de générer un tas de nouvelles colonnes à la fois en utilisant une boucle "for", et chaque colonne sera nommée comme l'élément suivant dans la matrice "échantillon". Je peux comprendre cette partie, je pense. Mais je veux aussi que chaque colonne inclue une formule pour rechercher une colonne différente, qui sera différente à chaque fois, et soustraire cette valeur de la valeur initiale (colonne "0"). Lorsque je l'exécute, cela me donne simplement des erreurs d'évaluation de formule, sans calculer ce que devrait être la colonne à laquelle elle fait référence.
Merci pour votre aide!
sample = {0, 1, 2, ...}
new columns = N Items (sample);
for( i=1, i<= new columns, i++, col = num(sample [i]);
dt << New Column (sample [i] || " Days", formula (as column (13+i+new columns) - :Name("0")))
);Re : Référencer une colonne par numéro de colonne dans une formule dans une boucle ForMerci beaucoup!!
Re : Référencer une colonne par numéro de colonne dans une formule dans une boucle ForMon erreur.La chaîne doit être analysée pour se débarrasser de la paire de guillemets
Names Default To Here( 1 );
dt = Current Data Table();
sample = {0, 1, 2};
new columns = N Items( sample );
For( i = 1, i <= new columns, i++,
col = Num( sample[i] );
colNamesList = dt << Get Column Names;
Wait( 0 );
Eval(
Substitute(
Expr(
dt << New Column( sample[i] || " Days",
formula( __column__ - :Name( "0" ) )
)
),
Expr( __column__ ),
Parse(":Name(\!"" || colNamesList[13 + i + new columns] || "\!")")
)
);
);Re : Référencer une colonne par numéro de colonne dans une formule dans une boucle ForMerci pour votre aide!! Cette solution fonctionne presque - mais je suis bloqué sur un dernier bit.
Actuellement, la feuille de calcul résultante me donne la formule suivante.
":Name(\!"5\!")" - 0
Je veux que la première moitié fasse référence à une colonne appelée "5", comme la seconde moitié fait référence à une colonne appelée "0". Peu importe ce que je fais, je n'arrive pas à afficher la première moitié :Name("5"). Lorsque je reformate les guillemets ou que j'essaie de les déplacer, j'obtiens simplement des variations sur ce thème.
Merci encore!
Re : Référencer une colonne par numéro de colonne dans une formule dans une boucle ForLe problème avec votre formule actuelle, ce sont les variables "i" et "New Columns".Ce que vous supposez, c'est que le calcul sera évalué en un calcul final, puis placé dans la fonction As Column().Le problème est que ce qui est placé dans la formule est As Column( 13 + i + new columns ).Ainsi, lorsque la formule est exécutée, elle n'a pas les valeurs de "i" et "nouvelles colonnes" lorsque vous avez créé la colonne, mais elle utilise quelles que soient les valeurs chaque fois qu'elle calcule ou recalcule les formules.Et puisque "i" et "New Columns" changent dans votre script, vous avez un problème.Vous pouvez maintenant modifier la formule pour effectuer le calcul avant de définir la formule, puis remplacer le numéro de colonne dans la formule.Cependant, le problème avec cela est qu'en utilisant des numéros de colonne, si une colonne du tableau est déplacée ou supprimée, le numéro de colonne dans la formule ne sera pas modifié et, par conséquent, le calcul sera erroné.Je vous suggère plutôt de remplacer dans la formule le nom réel de la colonne.Le script ci-dessous illustre l'approche pour le faire.
Names Default To Here( 1 );
dt = Current Data Table();
sample = {0, 1, 2};
new columns = N Items( sample );
For( i = 1, i <= new columns, i++,
col = Num( sample[i] );
colNamesList = dt << Get Column Names;
Wait( 0 );
Eval(
Substitute(
Expr(
dt << New Column( sample[i] || " Days",
formula( __column__ - :Name( "0" ) )
)
),
Expr( __column__ ),
":Name(\!"" || colNamesList[13 + i + new columns] || "\!")"
)
);
);