Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Unione codici articoli da due file

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

Unione codici articoli da due file

Postdi alby60 » 27/03/11 00:53

Ciao, vengo subito al mio problema,
ho due file, ogni file ha solo un foglio, il foglio contiene un elenco di articoli (48.000 codici articoli nel primo foglio e 34.000 nel secondo) in colonna A, in ogni file lo stesso articolo è presente una sola volta, le colonne dei due fogli sono le stesse, i dati arrivano fino alla colonna BN.
Come ho visto spesso chiedere da alcuni di voi cercherò di essere schematico anche se non è semplice.
Devo unire i due file in un nuovo file (file 3) e devo riportare tutti i codici articoli presenti nei due file.
Se il codice articolo è presente in entrambi i file, nel nuovo file vanno, inizialmente, riportati tutti i dati del file 2 (dalla colonna A alla colonna BN) poi con una macro già scritta da richiamare (che fa alcuni controlli fra diverse colonne e con condizioni specifiche per decidere quali dati, del file 1 vanno riportati sul file 3 in sostituzione di quelli già scritti. Se un codice del file 1 non è presente nel file 2 vanno riportati nel file 3 tutti i suoi dati, stessa cosa per un codice del file 2 non presente nel file 1.
Io ho fatto in questo modo:
ho copiato i due file in due fogli diversi di un nuovo file XLS
ho ordinato i dati per codice crescente in tutti e due i fogli
sto cercando di trovare una soluzione con una macro ma al momento non sono arrivato al risultato.
Grazie anticipato
alby60
Utente Junior
 
Post: 76
Iscritto il: 18/11/10 01:04

Sponsor
 

Re: Unione codici articoli da due file

Postdi Anthony47 » 27/03/11 15:41

Quindi vuoi aggiungere in coda ai record presenti nel File2 quelli di File1 che mancano in File2...

Per questo in File1, in una colonna libera, inserisci una formula Cerca.Vert del tipo
Codice: Seleziona tutto
=Cerca.Vert(ilCodice;[File2.xls]FoglioXY!A:A;1;0)
I codici mancanti in File2 avrano #N/D; ti bastera' applicare il filtro alla colonna, copiare le righe, incollare in coda a File2.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Unione codici articoli da due file

Postdi alby60 » 29/03/11 19:37

Ciao, grazie per la risposta. Sono stato fuori per lavoro e non ho potuto collegarmi.
Devo aggiungere i codici articolo presenti e non presenti nei due file costruendo un solo file. Al momento ho unito i due file in un solo file con due fogli per fare prima facendo le prove. I due file sono grandi perchè contengono molti dati. Se possibile vorrei non utilizzare delle formule visto che l'operazione la devo fare 5-6 volte ogni anno. Vorrei dare una sistemata al lavoro ma non trovo il tempo. Sono convinto che ci guadagnerei ma aspetto tempi migliori.
alby60
Utente Junior
 
Post: 76
Iscritto il: 18/11/10 01:04

Re: Unione codici articoli da due file

Postdi ricky53 » 30/03/11 00:03

Ciao,
ti ho scritto del codice che dovrebbe andare bene per quanto ti occorre.
I nomi delle variabili sono autoesplicativi.
I nomi delle macro fanno capire cosa elaborano.
Non ho messo nessun commento nella speranza che sia chiaro quanto da me scritto, in caso contrario mi trovi QUI.

Ho provato un file con 10.000 righe x 10 colonne per entrambi i fogli ed ho avuto tempi di 2-3 secondi.

Ecco il codice.
Codice: Seleziona tutto
Option Explicit
Option Base 1
Option Compare Text
Private I As Long, J As Long, K As Integer, X As Integer, UR1 As Long, UC As Integer, UR2 As Long
Private WsIn1 As Worksheet, WsIn2 As Worksheet, WsOut As Worksheet
Private RangeIn1 As Range, RangeIn2 As Range, RangeOut As Range
Private MatriceIn1(), MatriceIn2(), MatriceOut()

Sub Copia_Articoli_da_più_Fogli()
    Dim Inizio As Double
    Dim Fine As Double
    Inizio = Timer
    Application.ScreenUpdating = False
   
    Set WsIn1 = Sheets("Foglio1")
    Set WsIn2 = Sheets("Foglio2")
    Set WsOut = Sheets("Foglio3")
    WsOut.Cells.ClearContents
   
    UC = WsIn1.Range("A2").End(xlToRight).Column
    UR1 = WsIn1.Range("A" & Rows.Count).End(xlUp).Row
    Set RangeIn1 = WsIn1.Range(WsIn1.Cells(2, 1), WsIn1.Cells(UR1, UC))
    MatriceIn1 = RangeIn1
   
    UR2 = WsIn2.Range("A" & Rows.Count).End(xlUp).Row
    Set RangeIn2 = WsIn2.Range(WsIn2.Cells(2, 1), WsIn2.Cells(UR2, UC))
    MatriceIn2 = RangeIn2
    ReDim MatriceOut(UR1 + UR2, UC)
    K = 1
    J = 1

    For I = 1 To UR1 - 1
Continua:
        If MatriceIn1(I, 1) > MatriceIn2(J, 1) And MatriceIn2(J, 1) <> "" Then
            Scrivi_Dati_Maggiori
            J = J + 1
            GoTo Continua
        Else
            If MatriceIn1(I, 1) = MatriceIn2(J, 1) Then
                Scrivi_Dati_Uguali
                J = J + 1
            Else
                Scrivi_Dati_Minori
            End If
        End If
    Next I
    If MatriceIn1(UR1 - 1, 1) < MatriceIn2(J, 1) Then
        Scrivi_Restanti_di_2
    End If
   
    Set RangeOut = WsOut.Range(WsOut.Cells(2, 1), WsOut.Cells(UR1 + UR2, UC))
    RangeOut = MatriceOut
   
    Application.ScreenUpdating = True
    Fine = Timer
    MsgBox "Elaborazione Terminata. Tempo impegato per l'elaborazione:  " & Round(Fine - Inizio, 3)
End Sub

Sub Scrivi_Dati_Maggiori()
    For X = 1 To UC
        MatriceOut(K, X) = MatriceIn2(J, X)
    Next X
    K = K + 1
End Sub

Sub Scrivi_Dati_Uguali()
    For X = 1 To UC
        MatriceOut(K, X) = MatriceIn1(I, X)
    Next X
    K = K + 1
End Sub

Sub Scrivi_Dati_Minori()
    For X = 1 To UC
        MatriceOut(K, X) = MatriceIn1(I, X)
    Next X
    K = K + 1
End Sub

Sub Scrivi_Restanti_di_2()
    Do While J < UR2
        Scrivi_Dati_Maggiori
        J = J + 1
    Loop
End Sub


Prova e ...
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Unione codici articoli da due file

Postdi alby60 » 31/03/11 22:17

Grazie. Grazie. L'ho provata fa quello che mi serviva. E' veramente veloce. La unisco al codice che ho già.
alby60
Utente Junior
 
Post: 76
Iscritto il: 18/11/10 01:04


Torna a Applicazioni Office Windows


Topic correlati a "Unione codici articoli da due file":


Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti