Associare codici a Nomi



  • Associare codici a Nomi
    di danielito (utente non iscritto) data: 25/10/2013 16:22:23

    Salve a tutti...sn Daniele, un vero inesperto ma ci devo riuscire,
    Allora veniamo al sodo,
    su un documento ho 2 fogli di excell, sul primo foglio nella colonna A ho dei codici, e a fianco nella B ho i nomi dei clienti a cui corrispondono, e nelle caselle successive la via il paese il Cap ecc.
    Nel foglio 2 invece, ho sempre i codici nella colonna 1, (non sono in ordine come neanche nel primo foglio) e il tipo d'impianto corrispondente.
    in poche parole io voglio creare una colonna nel foglio 1 dove, x ogni codice e cliente corrispondente gia presenti nelle colonne vicine, ci sia anche il tipo d'impianto associato (premetto che sn codici sparsi in entrambi i fogli, e i clienti nn sono in ordine alfabetico, e nel secondo foglio i codici si ripetono perchè sono presenti più tipi d'impianto)
    Attendo delucidazioni



  • di gaetanopr (utente non iscritto) data: 26/10/2013 00:20:06

    Ciao danielito, se ho capito bene, ti basterebbe la funzione cercaverticale, però prima parli di una colonna che dovrà contenere i dati relativo all'impianto e poi parli di più impianti per stesso codice, quindi credo ci vogliano più colonne, oppure nella stessa cella vuoi inserire tutti gli impianti associati allo stesso codice?
    Cerca di spiegare meglio, comunque è sempre meglio allegare un esempio che rispecchi la struttura reale del tuo file.




  • di danielito data: 27/10/2013 02:35:08

    nella stessa cella voglio inserire tutti gli impianti associati allo stesso codice....x ora nn posso allegarti il file xe` nn ho il permesso del mio principale..cmq si mi hai capito bene, nella stessa cella voglio farci stare tutti gli impianti che posside il cliente



  • di gaetanopr (utente non iscritto) data: 27/10/2013 11:18:39

    Come file basta un esempio con dati fittizi, giusto per avere l'impostazione, quindi se ci sono intestazioni di colonna, in quale colonna riportare i dati ripresi, ect ect.
    Presumendo che i dati iniziano da riga 2 in entrambi i fogli, nel foglio2 gli impianti sono riportati nella colonna B e devono essere ripresi per codice cliente nel primo foglio nella colonna F.


     
    Option Explicit
    Sub FindNext()
    Dim Sh1 As Worksheet
    Dim Sh2 As Worksheet, Rng As Range, firstAddress As String
    Dim LastRow As Long, LastRow2 As Long, NumC As Integer
    Dim Stringa As String, i As Long, ID
    
    Set Sh1 = Sheets("Foglio1")
    Set Sh2 = Sheets("Foglio2")
    LastRow = Sh1.Cells(Rows.Count, 1).End(xlUp).Row
    LastRow2 = Sh2.Cells(Rows.Count, 1).End(xlUp).Row
    
    Sh1.Range("F2:F" & LastRow).Clear
    For i = 2 To LastRow
     ID = Sh1.Cells(i, 1)
     With Sh2.Range("A2:A" & LastRow2)
      Set Rng = .Find(What:=ID, LookAt:=xlWhole, LookIn:=xlValues)
      If Not Rng Is Nothing Then
        firstAddress = Rng.Address
        Do
          Sh1.Cells(i, 6).Value = Sh1.Cells(i, 6).Value & "-" & Rng.Offset(, 1).Value
          Set Rng = .FindNext(Rng)
        Loop While Not Rng Is Nothing And Rng.Address <> firstAddress
      End If
     End With
    Next i
    
    For i = 2 To LastRow
      Stringa = Cells(i, 6).Value
      If Len(Stringa) - 1 > 0 Then
       Cells(i, 6) = Right(Stringa, Len(Stringa) - 1)
     End If
    Next i
     
    Set Sh1 = Nothing
    Set Sh2 = Nothing
    End Sub
    



  • di gaetanopr (utente non iscritto) data: 27/10/2013 11:30:40

    Oppure in questo modo
     
    Sub Impianto()
    Dim Sh1 As Worksheet
    Dim Sh2 As Worksheet
    Dim LastRow As Long, LastRow2 As Long
    Dim Stringa As String, i As Long, n As Long
    
    Set Sh1 = Sheets("Foglio1")
    Set Sh2 = Sheets("Foglio2")
    LastRow = Sh1.Cells(Rows.Count, 1).End(xlUp).Row
    LastRow2 = Sh2.Cells(Rows.Count, 1).End(xlUp).Row
    
    Sh1.Range("F2:F" & LastRow).Clear
    With Sh1
     For i = 2 To LastRow
       For n = 2 To LastRow2
        If .Cells(i, 1) = Sh2.Cells(n, 1) Then
        .Cells(i, 6) = .Cells(i, 6) & "-" & Sh2.Cells(n, 2)
       End If
      Next n
     Next i
    End With
    
    
    For i = 2 To LastRow
      Stringa = Cells(i, 6).Value
      If Len(Stringa) - 1 > 0 Then
       Cells(i, 6) = Right(Stringa, Len(Stringa) - 1)
     End If
    Next i
     
    Set Sh1 = Nothing
    Set Sh2 = Nothing
    End Sub



  • di danielito (utente non iscritto) data: 28/10/2013 14:15:16

    fra poco sn in ufficio e provo pio ti dico grazie 1000 intanto



  • di danielito (utente non iscritto) data: 28/10/2013 15:59:46

    Perdona la mia incompetenza, ma tutta la formula che mi hai mandato dove la inserisco? Nella prima colonna della cella della colonna F? in che maniera? o devo inserirla in un comando apposito?



  • di danielito (utente non iscritto) data: 28/10/2013 16:23:42

    scusa volelo dire nella prima cella della colonna F del foglio 1



  • di gaetanopr data: 28/10/2013 19:56:04

    cit>>Perdona la mia incompetenza, ma tutta la formula che mi hai mandato dove la inserisco? Nella prima colonna della cella della colonna F? in che maniera? o devo inserirla in un comando apposito?

    Apri il file fai Alt F11 e si aprira l'editor Vba, Inserisci, Modulo e incolli una delle due macro che ti ho postato
    Presumo che tu abbia le macro non abilitate, quindi devi abilitarle in questo modo:
    Fare clic sulla scheda File.
    Fare clic su Opzioni.
    Fare clic su Centro protezione e quindi su Impostazioni Centro protezione.
    In Centro protezione fare clic su Impostazioni macro.
    Disattiva tutte le macro con notifica
    Fare clic su OK.



  • di danielito (utente non iscritto) data: 29/10/2013 16:14:12

    Ok... ho fatto tutto quello che mi hai detto, ma quando avvio il modulo mi si blocca excel... nn riesco a capire xè!? excel 2013 tra l'altro non dovrebbe avere problemi...sai aiutarmi magari se sbaglio ancora qualcosa?



  • di danielito (utente non iscritto) data: 29/10/2013 19:12:13

    finalmente mi ha dato dei risultati... ma fino alla riga numero numero6249 che mi di dice:
    "Out of memory (Error 7), Office Shared [vblr6.chm1000007]"
    che devo fare?