Condividi:        

Excel copia dati da una tabella all'altra con indice

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

Excel copia dati da una tabella all'altra con indice

Postdi sandrin81a » 01/08/14 09:47

Ciao a tutti,
spero che qualcuno possa darmi una mano:
ho due tabelle, la prima è quella principale con alla prima colonna un indice progressivo da 1 a n, poi un numero variabile di colonne. La seconda tabella invece è formata da due colonne, nella prima colonna è inserito un numero che rappresenta la posizione del dato rispetto alla colonna indice della prima tabella, la seconda colonna è il dato.
Come posso inserire automaticamente il dato presente nella seconda tabella nella prima? Poi la seconda tabella andrebbe cancellata dal foglio.
Ho provato con cerca verticale, indice, e cerca orizzontale... ma ho fallito miseramente.

ESEMPIO Tabella 1:
INDICE,bla,bla,bla,bla,DATO
1,,,,,
2,,,,,
3,,,,,
4,,,,,
6,,,,,
7,,,,,
8,,,,,
9,,,,,
10,,,,,

ESEMPIO Tabella 2:
4,dato1
7,dato2

Quello che vorrei ottenere
ESEMPIO RISULTATO Tabella 1:
INDICE,bla,bla,bla,bla,DATO
1,,,,,
2,,,,,
3,,,,,dato1
4,,,,,
6,,,,,
7,,,,,dato2
8,,,,,
9,,,,,
10,,,,,

Purtroppo ho migliaia di righe e ogni volta devo scorrere su e giù a inserire manualmente i valori...

Grazie mille in anticipo a tutti
Saluti
sandrin81a
Utente Junior
 
Post: 22
Iscritto il: 14/07/13 00:53

Sponsor
 

Re: Excel copia dati da una tabella all'altra con indice

Postdi Flash30005 » 01/08/14 14:40

Con il cerca verticale risolvi egregiamente
Codice: Seleziona tutto
=CERCA.VERT(A1;G$1:H$10;2;FALSO)

La formula va inserita nella colonna dove vorresti avere il dato
e si riferisce alla riga 1 del foglio dove in
A1 hai il primo valore della tabella da cercare (tuo caso 1)
G$1:H$1 è il range (i due campi) della seconda tabella (se sono sullo stesso folgio)
2 si riferisce all'intervallo del range di ricerca quindi se la matrice valori inizia da G prenderà il valore in H perché (1 = G, 2= H 3= I, etc)
Infine Falso se i dati non sono ordinati e si usa nella maggior parte dei casi. (vedi Help in linea)
Inserisci il simbolo $ (dollaro) tra la lettera colonna e il numero riga
in maniera tale che quando copierai verso il basso la formula la matrice della tabella rimarrà invariata

Se la formula non trova il dato avrai valore 0 che possiamo non farlo inserire nel caso non occorra ma procediamo per gradi.
Inoltre ricorda che utilizzando la formula non potai eliminare i dati della tabella 2 se non fai un copia e incolla speciale con i valori dei dati in maniera tale da eliminare le formule che ti permetteranno di cancellare i dati della tabella2.

Ciao

Nel tuo esempio c'è un errore: il dato1 va alla riga 4 non alla riga 3 :D
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel copia dati da una tabella all'altra con indice

Postdi sandrin81a » 01/08/14 15:00

Grazie mille,
funziona, si vede che lo suo poco.. e quando mi serve sbatto la testa sul muro!

a me visualizza #N/D, è possibile lasciare la cella vuota?

grazie ancora!
ciao ciao
sandrin81a
Utente Junior
 
Post: 22
Iscritto il: 14/07/13 00:53

Re: Excel copia dati da una tabella all'altra con indice

Postdi Flash30005 » 01/08/14 15:18

Strano che hai come risultato #N/D
dovresti avere o 0 (zero) o il dato
Sei sicura di aver fatto tutto correttamente?
hai messo il simbolo $ (dollaro) tra la lettera colonna e il numero riga della matrice?
Nella tabella2 (nella prima colonna) ci sono tutti i riferimenti della prima colonna della tabella1?

Molto probabilmente nella prima colonna della tabella1 hai un valore che non è presente nella tabella2
prova questa formula
Codice: Seleziona tutto
=SE(VAL.ERRORE(CERCA.VERT(A1;G$1:H$10;2;FALSO))=VERO;"";CERCA.VERT(A1;G$1:H$10;2;FALSO))


ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel copia dati da una tabella all'altra con indice

Postdi sandrin81a » 01/08/14 15:32

ciao,
forse mi sono espresso male, ho #N/D al posto dello 0. Si nella prima colonna della Tabella 1 ho sicuramente valori non presenti nella prima colonna della Tabella 2. l'indice della Tabella 1 è continuo da 1 a qualche migliaia (dipende dal file) la Tabella 2 contiene delle informazioni puntuali solo su alcuni valori dell'indice in Tabella 1.
Ora provo ad usare la formula suggerita... e funziona!
Grazie mille ancora!
sandrin81a
Utente Junior
 
Post: 22
Iscritto il: 14/07/13 00:53

Re: Excel copia dati da una tabella all'altra con indice

Postdi Anthony47 » 02/08/14 00:16

Se pero' la tabella2, completata l' operazione di copia in tabella1, va cancellata (immagino per preparare ulteriori input), allora la formula non e' idonea e va usata una macro.
Propongo inoltre che l' area di tabella2 venga rivista come da immagine:
Immagine
free image hosting
Non solo cioe' i dati che si vorrebbero caricare in tabella1 ma anche l' indicazione di quale dato sia al momento presente in tabella1; questo e' fatto con la seguente formula inserita in C2 e poi copiata verso il basso:
Codice: Seleziona tutto
=SE(A2<>"";CERCA.VERT(A2;Foglio2!A:F;6;0);"")


Ho ipotizzato che Tabella1 sia in A:F di Foglio2.

Ulteriori informazioni possono essere visualizzate con formule analoghe se questo rendesse piu' chiaro il procedimento di inserimento dati in Tabella2.
Inoltre suggerisco di predisporre un' area per un eventuale "ripristino" di tabella1 in caso di errore; per questo ho usato la colonna H (va bene una qualsiasi colonna libera nel foglio di Tabella2).
Infine due pulsanti a cui sono associate le macro per copiare i dati in tabella1 e per azzerare il contenuto di tabella2, che corrispondon rispettivamente ai seguenti codici:
Codice: Seleziona tutto
Sub popola()
'vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=102445
Dim Tab1 As Range, UDArea As Range, I As Long, myMatch
'
Set Tab1 = Sheets("Foglio2").Range("A1:F1000")    '<< L' area della Tabella1
Set UDArea = Range("H1")                          '<< L' inzio dell'area dei vecchi valori
'
UDArea.Offset(1, 0).Resize(1000, 1).ClearContents 'Azzera vecchi valori
For I = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    If Cells(I, "B").Value <> "" Then
        myMatch = Application.Match(Cells(I, "A"), Tab1.Resize(Tab1.Rows.Count, 1), 0)
        If Not IsError(myMatch) Then
            UDArea.Offset(I - 1, 0).Value = Tab1.Cells(1, 1).Offset(myMatch - 1, 5).Value '
            Tab1.Cells(1, 1).Offset(myMatch - 1, 5).Value = Cells(I, "B").Value
        End If
    End If
Next I
End Sub


Codice: Seleziona tutto
Sub clearT2()
    Range(Range("A2"), Range("A2").End(xlDown)).Offset(0, 1).ClearContents
End Sub

Le righe marcate <<< vanno personalizzate

Il codice va inserito in un "modulo standard" del vba. Da Excel:
-Alt F11 per aprire l' editor delle macro
-Menu /inserisci /Modulo
-copia il codice e inseriscilo nel frame di dx del file

Poi torna sul foglio di Tabella2 e disegna i due pulsanti (l' oggetto piu' semplice da usare appartiene ai controlli Modulo) e associagli le macro (ti verra' fatta una domanda specifica nel ciclo di creazione del pulsante).
In questo modo potrai eseguire la macro di tuo interesse al semplice premere del pulsante.

La macro "popola" posizionera' il contenuto di Tabella2 in Tabella1, previo salvataggio in colonna H del valore "corrente" della riga che viene poi aggiornata; questo per poter eventualmente procedere a un ripristino di Tabella1, in caso di errore "sull' ultimo trasferimento eseguito".

Spero che quanto proposto sia di qualche utilita'.

Ciao a tutti
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Excel copia dati da una tabella all'altra con indice":


Chi c’è in linea

Visitano il forum: papiriof e 59 ospiti