Fare riferimento a una colonna per numero di colonna in formula in un ciclo ForCiao a tutti,
Sto cercando di generare un gruppo di nuove colonne contemporaneamente usando un ciclo "for", e ogni colonna verrà nominata come l'elemento successivo nella matrice "campione". Posso capire quella parte, penso. Ma voglio anche che ogni colonna includa una formula per cercare una colonna diversa, che sarà diversa ogni volta, e sottrarre quel valore dal valore iniziale (colonna "0"). Quando eseguo questo mi dà solo errori di valutazione delle formule, non calcolando quale dovrebbe essere la colonna a cui fa riferimento.
Grazie per l'aiuto!
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")))
);Ri: riferimento a una colonna per numero di colonna in formula in un ciclo ForGrazie mille!!
Ri: riferimento a una colonna per numero di colonna in formula in un ciclo ForErrore mio. La stringa deve essere analizzata per sbarazzarsi della coppia di virgolette
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] || "\!")")
)
);
);Ri: riferimento a una colonna per numero di colonna in formula in un ciclo ForGrazie per l'aiuto!! Questa soluzione quasi funziona, ma sono bloccato su un ultimo bit.
Attualmente, il foglio di lavoro risultante mi dà la seguente formula.
":Name(\!"5\!")" - 0
Voglio che la prima metà faccia riferimento a una colonna chiamata "5", poiché la seconda metà fa riferimento a una colonna denominata "0". Non importa quello che faccio, non posso ottenere il primo tempo solo per mostrare: Nome ("5"). Quando riformatto le virgolette o provo a spostarle, ottengo solo variazioni su quel tema.
Grazie ancora!
Ri: riferimento a una colonna per numero di colonna in formula in un ciclo ForIl problema con la tua formula attuale sono le variabili "i" e "Nuove colonne". Quello che state assumendo è che il calcolo verrà valutato su un calcolo finale e quindi inserito nella funzione As Column (). Il problema è che ciò che è inserito nella formula è As Column (13 + i + nuove colonne). Quindi, quando viene eseguita la formula, non ha i valori di "i" e "nuove colonne" quando hai creato la colonna, ma utilizza qualunque cosa i valori siano ogni volta che calcola o ricalcola le formule. E dal momento che "i" e "Nuove colonne" stanno cambiando all'interno del tuo script, hai un problema. Ora è possibile modificare la formula per eseguire il calcolo prima di definire la formula, quindi sostituire il numero di colonna nella formula. Tuttavia, il problema con questo è che utilizzando i numeri di colonna, se una colonna nella tabella viene spostata o eliminata, il numero di colonna nella formula non verrà modificato e, pertanto, il calcolo sarà errato. Ti suggerisco invece di sostituire nella formula il nome effettivo della colonna. Lo script seguente illustra l'approccio per farlo.
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] || "\!")"
)
);
);