Aggiornamento listini



  • Salve a tutti,
    di Mario81 (utente non iscritto) data: 01/10/2009

    Ho bisogno di qualcuno che riesca a fare una macro di questo genere:
    io ho due fogli excel che sono due listini
    devo aggiornare il primo con il secondo.
    tutti e due hanno la prima colonna che contiene delle voci univoche alcune uguali alcune diverse.
    quello che vorrei riuscire a fare è che sul listino 1 per le voci che nella colonna 1 hanno un codice presente anche nel listino 2 si aggiorni sulla stessa riga la colonna aq e as con il valore che sulla righa di quel codice sta sulla colonna j del listino 2. per le voci che ci sono nel listino1 e non nel lisino 2 vorrei che non succedesse niente, mentre le voci che ci sono nel listino 2 ma non ci sono nel listino 2 vorrei che venisse scritta la sulla prima colonna la voce mancante e sulla colonna aq e as le rispettive voci della colonna j.

    forse non mi sono spiegato bene ma fatemi sapere se qualcuno può aiutarmi anche dietro piccolo compenso.
    grazie
    mario

     
    ?



  • di Big ronnie (utente non iscritto) data: 02/10/2009

    Ciao mario,

    prova questa macro se ti va bene.provala sempre su una copia del file.

    ciao big
     
    Sub Aggiornamento()
    Dim Aggiornato As Boolean, UltimaCellaSh1 As Long, UltimaCellaSh2 As Long
    UltimaCellaSh1 = Sheets(1).Range("a65536").End(xlUp).Row
    UltimaCellaSh2 = Sheets(2).Range("a65536").End(xlUp).Row
    Aggiornato = False
    For Sh2 = 1 To UltimaCellaSh2
      For Sh1 = 1 To UltimaCellaSh1
        UltimaCellaSh1 = Sheets(1).Range("a65536").End(xlUp).Row
        If Sheets(2).Range("a" & Sh2) = Sheets(1).Range("a" & Sh1) Then
           Sheets(1).Range("aq" & Sh1) = Sheets(2).Range("J" & Sh2)
           Sheets(1).Range("as" & Sh1) = Sheets(2).Range("J" & Sh2)
           Aggiornato = True
        End If
      Next Sh1
        If Aggiornato = False Then
           Sheets(1).Range("a" & UltimaCellaSh1 + 1) = Sheets(2).Range("a" & Sh2)
           Sheets(1).Range("aq" & UltimaCellaSh1 + 1) = Sheets(2).Range("J" & Sh2)
           Sheets(1).Range("as" & UltimaCellaSh1 + 1) = Sheets(2).Range("J" & Sh2)
        End If
      Aggiornato = False
    Next Sh2
    End Sub