Ho due variabili che vengono utilizzate per definire 15 colonne in totale. Sono a = {"1", "2", "3", "4", "5"} e b = {"1", "2", "3"}. Attualmente ci sono 15 colonne che sono già state create con la notazione di Column("11"), Column("12"), Column("13"), Column("21"), ovvero Column(b[1] || a[1]), Colonna(b[1] || a[2]), ecc...
Ho calcolato la media delle prime 6 righe di quelle 15 colonne esistenti e l'ho inserita in un array di dimensione 15. Ho chiamato questo array "ave".
Quindi ave[1] sarebbe la media delle prime 6 righe in Column("11"), ave[2] sarebbe la media delle prime 6 righe in Column("12"), ecc...
Ora, quello che vorrei fare è creare 15 nuove colonne con il prefisso "D" utilizzando entrambi gli array "a" e "b". Inoltre, disponi di una formula impostata per quelle colonne che prenda la colonna esistente: le 6 righe medie di quella colonna.
Ad esempio, la formula per Colonna("D11") sarebbe la seguente:
:Name("11") - via[1]
La colonna ("D12") sarebbe la seguente:
:Name("12") - via[2]
Il mio codice:
index = 1;
For( i = 3, i > 0, i--,
For( j = 5, j > 0, j--,
at << Add Multiple Columns( "D" || b[i] || a[j], 1, numeric, continuous, );
F = Eval Expr(expr(ave[index]));
Column( "D" || b[i] || a[j] ) << Set Formula( :Name("11")-Name Expr(F) );
index = index + 1;
);
);
Il codice sopra non funziona quando tento di incrementare la variabile indice attraverso i 15 valori medi memorizzati in "ave". L'altro problema è che devo scorrere :Name("11"), :Name("12"), ecc. attraverso tutte le combinazioni di a & b nella formula. Ho quasi bisogno di un modo per impostare la formula nel modo seguente:
:Nome(b[i] || a[i])
Tuttavia, :Name deve utilizzare una stringa con virgolette tra loro e non ti consentirà di farlo in questo modo.
Ho provato più metodi con parse, eval, ecc. Ma senza fortuna.
Qualsiasi aiuto sarebbe molto apprezzato!
Grazie!
Ha funzionato magnificamente! Grazie!
Ecco un pezzo di JSL che funzionerà.Utilizza un metodo in cui viene generata la stringa di caratteri esatta di ciò che deve essere il comando richiesto, quindi Eval(Parse()) per eseguire il codice
index = 1;
;
For( i = 3, i > 0, i--,
For( j = 5, j > 0, j--,
Eval(
Parse(
"at << New Column(\!"D" || b[i] || a[j] ||
"\!",1,numeric,continuous,Formula( :Name( \!""
|| Char( index + 10 ) || "\!" ) - " || Char( ave[index] ) || "));"
)
);
index = index + 1;
);
);