Assegnazione array ad una matrice
Hai un problema con Excel? 
Assegnazione array ad una matrice
di lorenzofe data: 28/11/2016 16:24:13
Ciao a tutti. Non riesco a trovare qualcosa di simile in rete. Esiste un modo per assegnare un array ad un'intera riga di una matrice?
Ovviamente nel codice sotto mi dà errore di dimensione perchè di fatto matrix ha 2 dimensioni ed io ne specifico solo una ma non conosco la sintassi se esiste. In Matlab è matrix(1,:) = vett
Vorrei però non utilizzare un ciclo for per scorrere la seconda dimensione ed inserire elemento per elemento, dato che in realtà "vett" è un array preso da excel con l'oggetto Names("vett").value.
Esiste una soluzione? Grazie a tutti!!
Sub Macro1()
Dim vett(1 To 5)
Dim matrix(1 To 216, 1 To 5)
For i = 1 To 5
vett(i) = i
Next i
matrix(1) = vett
End Sub |
di patel data: 28/11/2016 17:25:49
allega un file di esempio e spiega bene la situazione nel complesso
di scossa data: 28/11/2016 17:36:17
cit.: "Vorrei però non utilizzare un ciclo for per scorrere la seconda dimensione..."
Potresti semplicemente cambiare la dichiarazione di matrix:
Dim matrix(1 To 216)
Ti troverai con
matrix(1)(1) 'valorizzato con 1
matrix(1)(2) 'valorizzato con 2
matrix(1)(3) 'valorizzato con 3
matrix(1)(4) 'valorizzato con 4
matrix(1)(5) 'valorizzato con 5
| scossa's web site |
| Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw) |
di lorenzofe (utente non iscritto) data: 28/11/2016 22:03:24
Grazie x le risposte!!
@scossa: quando vado ad assegnare vett a matrix(1)(1) mi dice comunque "tipo non corrispondente".
@patel: è un file un pò complicato. Si tratta di una vero e proprio progetto preliminare di un velivolo. Progetto che feci all'università in matlab e adesso sto traducendo (a perdita di tempo) in excel con tutte le difficoltà del caso. Preferirei non metterlo nel web. Il file calcola più di 200 tipi di configurazioni di velivolo tra cui poi scegliere la più adatta. Wdet e Wparziali variano ad ogni ciclo iterativo e alla fine del calcolo ho bisogno di avere una tabella simile a quella del file.
Per fare questo alla fine di ogni ciclo voglio riempire una matrice 200x5x28 inserendo nella seconda e terza dimensione Wdet e Wparziali.
di patel data: 28/11/2016 22:23:25
ho parlato di esempio, quindi qualcosa di ridotto per farci capire cosa vuoi fare, situazione attuale e risultato desiderato
di scossa data: 28/11/2016 22:26:12
cit.: "quando vado ad assegnare vett a matrix(1)(1) mi dice comunque "tipo non corrispondente"."
Certo, se dichiari
Dim matrix(1 To 216)
poi l'assegnazione devi farla con matrix(1) non con matrix(1)(1)
| scossa's web site |
Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw) |
di lorenzofe (utente non iscritto) data: 28/11/2016 22:38:54
Ok, però matrix(1) può essere solo uno scalare, mentre io vorrei che matrix(1) fosse un vettore..
di lorenzofe (utente non iscritto) data: 28/11/2016 23:35:39
Risolto. Bastava non dichiarare double matrix. Rispetto a matlab è un pò più complicato, ma si riesce comunque a costruire matrici da vettori. Grazie dell'aiuto!!!
Dim vett1(1 To 5) As Double
Dim vett2(1 To 20) As Double
Dim matrix1(1 To 2)
Dim matrix2(1 To 216, 1 To 2)
For i = 1 To 20
vett2(i) = 2 * i
Next i
For i = 1 To 5
vett1(i) = i
Next i
matrix1(1) = vett1()
matrix1(2) = vett2()
matrix2(1, 1) = 1
matrix2(1, 2) = matrix1()
End Sub |
Vuoi Approfondire?