Condividi:        

[Excel] Allineare per riga i dati di 3 tabelle

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] Allineare per riga i dati di 3 tabelle

Postdi edos » 27/05/15 15:07

Buongiorno,
Ho trovato vari altri interventi a questo proposito nel forum ma non essendo esperto in materia non sono riuscito comunque a risolvere il problema.
Vorrei allineare per riga le celle con contenuto uguale di 3 tabelle differenti. In particolare vorrei che i codici presenti nelle colonne F e K (SE PRESENTI) si allineino a quelli uguali contenuti nella colonna A (nel caso non fossero presenti tutti gli stessi codici in tutte e tre le colonne dovrebbe rimanere una cella vuota nella colonna dove è assente il codice). I codici sono già disposti secondo un ordine preciso in senso verticale.
Le celle delle colonne G, H e I dovrebbero seguire gli spostamenti delle celle in F, mentre le celle delle colonne L, M e N dovrebbero seguire gli spostamenti delle celle in K.
Vi ringrazio anticipatamente.
Saluti



Immagine
free image hosting
edos
Newbie
 
Post: 4
Iscritto il: 27/05/15 14:39

Sponsor
 

Re: [Excel] Allineare per riga i dati di 3 tabelle

Postdi Anthony47 » 27/05/15 23:15

Ciao edos, benvenuto nel forum.
L'immagine e' illeggibile, comunque penso che ti dovrebbe aiutare la funzione Cerca.Vert.

Se con questo vago spunto non risolvi allora allega una immagine leggibile, meglio un file su cui fare le prove; per come fare vedi www.pc-facile.com/forum/viewtopic.php?f=26&t=103893

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

Re: [Excel] Allineare per riga i dati di 3 tabelle

Postdi edos » 28/05/15 14:38

Grazie per il benvenuto!
Ho già provato ad usare la funzione Cerca.Vert, ma dato che non sono affatto competente non sono riuscito a raggiungere il risultato. Come si potrebbe sfruttare nel mio caso?

Allego una nuova immagine e un file di esempio.
Grazie ancora.
Immagine
http://www.filedropper.com/provasnps
edos
Newbie
 
Post: 4
Iscritto il: 27/05/15 14:39

Re: [Excel] Allineare per riga i dati di 3 tabelle

Postdi Anthony47 » 29/05/15 18:36

Ho lavorato di fantasia sul file pubblicato, e alla fine ho elaborato questo codice:
Codice: Seleziona tutto
Dim J As Long
Sub reshit()
Dim VArrA, VArrF, VArrK, LastA As Long, LastF As Long, LastK As Long, DestSh As String
Application.ScreenUpdating = False
DestSh = "Sheet2"           '<<< Il foglio dove sara' creato il nuovo listato

J = 1
LastA = Cells(Rows.Count, 1).End(xlUp).Row
LastF = Cells(Rows.Count, 6).End(xlUp).Row
LastK = Cells(Rows.Count, 11).End(xlUp).Row
VArrA = Range("A2").Resize(LastA - 1, 1).Value
VArrF = Range("F2").Resize(LastF - 1, 4).Value
VArrK = Range("K2").Resize(LastK - 1, 4).Value
Sheets(DestSh).Cells.ClearContents
Range("A1").Resize(LastA, 4).Copy Sheets(DestSh).Range("A1")
aaaa = coReshit(VArrF, 6, Sheets(DestSh).Range("A1").Resize(LastA + J, 1))
aaaa = coReshit(VArrK, 11, Sheets(DestSh).Range("A1").Resize(LastA + J, 1))
Application.ScreenUpdating = True
MsgBox ("Completato")
End Sub

Function coReshit(ByRef myArr, ByVal mycol As Long, ByRef myArea As Range)
Dim I As Long, myMatch, ColCod As Long, startI As Range

J = 1
ColCod = LBound(myArr, 2)
Set startI = myArea.Cells(1, 1).Offset(20000, 0).End(xlUp)
For I = LBound(myArr, 1) To UBound(myArr, 1)
    myMatch = Application.Match(myArr(I, ColCod), myArea, False)
    If Not IsError(myMatch) Then
        myArea.Cells(myMatch, mycol) = myArr(I, ColCod)
        myArea.Cells(myMatch, mycol + 1) = myArr(I, ColCod + 1)
        myArea.Cells(myMatch, mycol + 2) = myArr(I, ColCod + 2)
        myArea.Cells(myMatch, mycol + 3) = myArr(I, ColCod + 3)
    Else
        startI.Offset(J, 0) = myArr(I, ColCod)
        startI.Offset(J, mycol - 1).Value = myArr(I, ColCod)
        startI.Offset(J, mycol + 0).Value = myArr(I, ColCod + 1)
        startI.Offset(J, mycol + 1).Value = myArr(I, ColCod + 2)
        startI.Offset(J, mycol + 2).Value = myArr(I, ColCod + 3)
        J = J + 1
    End If
Next I
End Function

Da excel:
-premi Alt-F11; si apre l' editor delle macro
-Menu /Inserisci /Modulo
-Copi il codice e lo incolli nel frame di dx.
L' istruzione marcata <<< va personalizzata col nome di un foglio in cui sara' ricostruito il nuovo elenco; il foglio deve gia' esistere, e SARA' AZZERATO ALL'INIZIO SENZA PREAVVISO.

Poi torni su Excel, attivi il foglio contenente l' elenco da sistemare e lanci la macro "reshit":
-Premi Alt-F8, scegli reshit dall' elenco di macro disponibili, premi Esegui.

Poi controlla l'esito sul foglio di output.

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

Re: [Excel] Allineare per riga i dati di 3 tabelle

Postdi edos » 29/05/15 19:35

Grazie moltissime per l'aiuto!
Ho provato a fare come mi hai detto. Purtroppo ad un certo punto c'è stato un intoppo: dopo aver attivato la macro reshit è uscita una finestra di errore (Run-time error '9') con possibilità di cliccare su "debug", su cui ho cliccato.

Ti allego le immagini.

Immagine

Immagine

Grazie ancora.
Buona serata
edos
Newbie
 
Post: 4
Iscritto il: 27/05/15 14:39

Re: [Excel] Allineare per riga i dati di 3 tabelle

Postdi Anthony47 » 29/05/15 22:37

L' istruzione marcata <<< va personalizzata col nome di un foglio in cui sara' ricostruito il nuovo elenco; il foglio deve gia' esistere, e SARA' AZZERATO ALL'INIZIO SENZA PREAVVISO.

Queste sono le istruzioni; ma io non vedo nessun foglio che si chiami "SNP appaiati"...
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Allineare per riga i dati di 3 tabelle

Postdi edos » 30/05/15 01:16

Funziona benissimo!!
Non avevo seguito bene le istruzioni.
Ti sono davvero grato per il prezioso aiuto. :)
edos
Newbie
 
Post: 4
Iscritto il: 27/05/15 14:39


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Allineare per riga i dati di 3 tabelle":


Chi c’è in linea

Visitano il forum: Nessuno e 85 ospiti