Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Da matrice a vettore

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Da matrice a vettore

Postdi Daniele De Leonardis » 18/04/14 13:01

Buongiorno
Ho una matrice di questo tipo
A B C D
1 fre Uty Tyu Fgh
2 Zsr Opi Awe
3 Vty jio
4 fty

Con le seguenti caratteristiche:
- I dati al suo interno possono variare in quantità fino ad un massimo di 35 righe e 34 colonne ($A$1:$AH$35)
- I dati di ciascuna colonna sono compattati: non ci possono essere celle vuote tra due celle piene ES_ se A1 e A3 contengono dati allora A2 dovrà per forza contenere dati
- Non può esserci un vettore colonna privo di dati tra due vettori contenenti dati ES_ se A1:A35 e C1:C35 contengono dati allora B1:B35 deve per forza contenere dati
- I dati contenuti in un vettore colonna partono sempre dalla prima riga del vettore
ES_ NON è possibile una situazione del tipo:

A
1
2 hui
3 ert

- Il vettore A1:A35 non può mai essere vuoto

Mi occorre una formula che posta su un nuovo foglio di lavoro e trascinata in orizzontale mi dia come risultato:
celle piene del vettore A1:A35 + celle piene del vettore B1:B35 + celle piene del vettore C1:C35 (…)
senza copiare le celle vuote.
Nel caso dell’esempio precedente dovrei ottenere:
A B C D E F G H I J
1 fre Zsr Vty fty Uty Opi Tyu Fgh Awe jio

Mi scuso se son stato troppo prolisso nella spiegazione…
Ringrazio anticipatamente e faccio i complimenti al forum che mi ha spesso cavato dai pasticci!
Un saluto… :?: :idea: :)
Daniele De Leonardis
Newbie
 
Post: 4
Iscritto il: 18/04/14 10:08

Sponsor
 

Re: Da matrice a vettore

Postdi wallace&gromit » 18/04/14 13:17

con una sola formula mi viene in mente solo il concatena (che tralascia le celle vuote), ma diventa molto lungo da elaborare:
Codice: Seleziona tutto
=CONCATENA(A1;A2;A3;A4;A5;A6...A35;B1;B2;B3;B4....B35)
ecc.
altrimenti penso che devi fare una funzione ad hoc.
Forse qualcun altro ha idee migliori
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1421
Iscritto il: 16/01/12 14:21

Re: Da matrice a vettore

Postdi Daniele De Leonardis » 18/04/14 13:31

Grazie per la risposta velocissima.
Il problema di questa formula è che mi copia un unico testo in una cella sola mentre avrei bisogno di mantenere le celle separate
Daniele De Leonardis
Newbie
 
Post: 4
Iscritto il: 18/04/14 10:08

Re: Da matrice a vettore

Postdi wallace&gromit » 18/04/14 13:58

È vero... allora non vedo altro che una public function, provo a cimentarmi.
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1421
Iscritto il: 16/01/12 14:21

Re: Da matrice a vettore

Postdi wallace&gromit » 18/04/14 14:25

no evidentemente non basta una function ma ci vuole una macro, prova questa:
Codice: Seleziona tutto
Sub compila()
Worksheets("Foglio2").Range("A1:IV1").Clear
dest = 1
For CC = 1 To 34
For I = 1 To 35
If Worksheets("Foglio1").Cells(I, CC).Value = "" Then GoTo nuovoI
Worksheets("Foglio2").Cells(1, dest).Value = Worksheets("Foglio1").Cells(I, CC).Value
dest = dest + 1
nuovoI:
Next I
Next CC
End Sub
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1421
Iscritto il: 16/01/12 14:21

Re: Da matrice a vettore

Postdi Daniele De Leonardis » 18/04/14 15:08

Grazie davvero wallace!
A breve ti darò feedback. Non mi sono mai cimentato con le macro...provo e ti dico.
Se qualcuno trovasse la soluzione con una formula sarebbe perfetto ma a sto punto mi sa che non si può...
Daniele De Leonardis
Newbie
 
Post: 4
Iscritto il: 18/04/14 10:08

Re: Da matrice a vettore

Postdi wallace&gromit » 18/04/14 15:17

Sicuramente non è il massimo di eleganza, altri risolverebbero meglio, ma come tentativo del venerdì santo poteva starci.
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1421
Iscritto il: 16/01/12 14:21

Re: Da matrice a vettore

Postdi Daniele De Leonardis » 28/04/14 11:21

La public function è perfetta (Grazie!!). Per chi si trovasse di fronte a un problema simile do anche una soluzione alternativa solo con formule (molto poco elegante).

1. Su un nuovo foglio di lavoro che chiamo 'foglio di appoggio' ho creato due colonne di servizio:
la prima colonna (da cella A2 a cella A1191) contiene le formule
=foglio1!A1 (a partire dalla cella A2 di 'foglio di appoggio')
trascinata in basso fino a trovare foglio1!A35
=foglio1!B1 (a partire dalla cella A37 di 'foglio di appoggio')
trascinata in basso fino a trovare foglio1!B35
(...)
cosi fino ad arrivare alla colonna AH

2. nella seconda (colonna B:B ) ho inserito la formula in forma di matrice trovata in un altro post del forum:
=SE(RIF.RIGA(A1)<=CONTA.VALORI($A$2:$A$1191);INDICE($A$1:$A$1191;PICCOLO(SE($A$2:$A$1191<>"";
RIF.RIGA($A$2:$A$1191);"");RIF.RIGA(A1)));""))
da confermare con ctrl + maiusc + invio e trascinata in basso fino alla cella B1191

3. su un ulteriore foglio ottengo quindi il risultato che mi interessa con la funzione INDICE() quindi digiterò:
=INDICE('foglio di appoggio!'$B$1:$B$1191;RIF.COLONNA(A1);RIF.RIGA(A1))
trascino la formula in orizzontale quanto basta.

Un saluto!
Daniele De Leonardis
Newbie
 
Post: 4
Iscritto il: 18/04/14 10:08


Torna a Applicazioni Office Windows


Topic correlati a "Da matrice a vettore":


Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti