Info formula



  • Info formula
    di Salvoxs (utente non iscritto) data: 07/04/2014 16:18:11

    Salve a tutti.
    Ho un problema con un foglio Excel.
    Metterò un file in allegato dove ho inserito nel primo foglio i dati iniziali e nel secondo come vorrei che diventassero automaticamente tramite una formula o qualsiasi altro modo.
    In pratica in una colonna ho un elenco di nomi dei quali una parte sono doppi, ma hanno numeri diversi.
    Sto cercando di avere una riga con un solo nome ma che contenga anche gli altri numeri dei doppi.
    Non è facile da spiegare nel file di prova che ho creato si capisce subito cosa intendo.
    C'è da considerare che questo procedimento mi serve per una grossa quantità di nomi anche 10000.
    Quindi non li posso fare uno ad uno.

    Aspetto Risposta
    Grazie in anticipo





  • di lepat (utente non iscritto) data: 07/04/2014 16:49:54

    prova questa macro
     
    Sub a()
    r = 3
    destcol = 7
    Do While Cells(r, 1) <> ""
      If Cells(r, 1) = Cells(r - 1, 1) Then
        Cells(r - 1, destcol) = Cells(r, 6)
        destcol = destcol + 1
        Rows(r).Delete
      Else
        destcol = 7
        r = r + 1
      End If
    Loop
    End Sub



  • di Raffaele_53 (utente non iscritto) data: 07/04/2014 16:50:14

    Dovrebbe andare bene
     
    Option Explicit
    Sub calcola()
    Dim sh1 As Worksheet: Set sh1 = Worksheets("FILE INIZIALE") ' da cambiare casomai
    Dim sh2 As Worksheet: Set sh2 = Worksheets("COME VORREI CHE DIVENTASSE") ' da cambiare casomai
    Dim X As Long, Y As Long, RR As Long, R As Long, uriga1 As Long
    Dim Art1 As String, Col As Long, Area1 As Range, R2 As Object
    Application.ScreenUpdating = False
    uriga1 = sh2.Range("A" & Rows.Count).End(xlUp).Row
        If uriga2 > 1 Then
            sh2.Range("A2:AA" & uriga2).ClearContents
        End If
    uriga1 = sh1.Range("A" & Rows.Count).End(xlUp).Row
    RR = 2
    Set Area1 = sh2.Range("A2:A" & uriga1)
        For X = 2 To uriga1
        Art1 = sh1.Cells(X, 1)
        Set R2 = Area1.Find(Art1, LookIn:=xlValues, LookAt:=xlWhole)
            If R2 Is Nothing Then
                sh1.Range(sh1.Cells(X, 1), sh1.Cells(X, 6)).Copy
                sh2.Cells(RR, 1).PasteSpecial
                RR = RR + 1
            Else
                R = R2.Row
                Col = sh2.Cells(R, Columns.Count).End(xlToLeft).Column
                sh2.Cells(R, Col + 1) = sh1.Cells(X, 6)
            End If
        Next X
    MsgBox " Fatto"
    Application.ScreenUpdating = True
    Set Area1 = Nothing
    Set sh1 = Nothing
    Set sh2 = Nothing
    End Sub



  • di Mister_x (utente non iscritto) data: 07/04/2014 17:46:50

    ciao

    visto che intanto che scrivevo la sub ti hanno gia' passato due soluzioni
    ti passo anche la mia da mettere in un modulo di classe,
    questa anche se i nomi non sono consecutivi fa la ricerca su tutto il database e riporta i valori

    allegato anche il tuo file con la sub inserita PROVA.RAR

    ciao
     
    Sub Allinea()
    Dim Nrighe As Long, Ncol As Long
    Dim i, o As Long
    Dim Nome As Variant
    Ncol = 2
    Nrighe = Sheets("FILE INIZIALE").Cells(Rows.Count, "A").End(xlUp).Row
    Sheets("FILE INIZIALE").Select
        Range("A2:A" & Nrighe).Select
        Selection.Copy
    Sheets("Con Macro").Select
        Range("A2").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        ActiveSheet.Range("$A$1:$A$" & Nrighe).RemoveDuplicates Columns:=1, Header:=xlYes
    Range("A1").Select
    For o = 2 To Sheets("Con Macro").Cells(Rows.Count, "A").End(xlUp).Row
      Nome = Sheets("Con Macro").Cells(o, 1)
      For i = 2 To Nrighe
        If Sheets("FILE INIZIALE").Cells(i, 1) = Nome Then
          If Ncol = 2 Then
           Sheets("Con Macro").Cells(o, Ncol) = Sheets("FILE INIZIALE").Cells(i, 2)
           Ncol = Ncol + 1
           Sheets("Con Macro").Cells(o, Ncol) = Sheets("FILE INIZIALE").Cells(i, 3)
           Ncol = Ncol + 1
           Sheets("Con Macro").Cells(o, Ncol) = Sheets("FILE INIZIALE").Cells(i, 4)
           Ncol = Ncol + 1
           Sheets("Con Macro").Cells(o, Ncol) = Sheets("FILE INIZIALE").Cells(i, 5)
           Ncol = Ncol + 1
           Sheets("Con Macro").Cells(o, Ncol) = Sheets("FILE INIZIALE").Cells(i, 6)
           Else
           Ncol = Ncol + 1
           Sheets("Con Macro").Cells(o, Ncol) = Sheets("FILE INIZIALE").Cells(i, 6)
          End If
        End If
        Next i
     Ncol = 2
    Next o
    End Sub
    






  • di Salvoxs data: 11/04/2014 12:57:34

    Grazie di cuore a tutti.
    Scusate se rispondo solo ora ma non ho avuto il tempo.
    Tutte le possibilità che mi avete dato vanno benissimo.
    Grazie ancora di cuore a tutti.
    Un saluto.



  • di Salvo (utente non iscritto) data: 14/04/2014 19:13:53

    Buonasera a tutti .
    ho notato un problema in questa macro se ho due persone con lo stesso nome e cognome ma con la via diversa mi si uniscono comunque i numeri anche se sono due persone diverse.
    c'è una soluzione?


  • Info formula
    di Salvo (utente non iscritto) data: 14/04/2014 23:34:34

    Salve a tutti.
    Ho un problema con un foglio Excel.
    Metterò un file in allegato dove ho inserito nel primo foglio i dati iniziali e nel secondo come vorrei che diventassero automaticamente tramite una formula o qualsiasi altro modo.
    In pratica in una colonna ho un elenco di nomi dei quali una parte sono doppi, ma hanno numeri diversi.
    Sto cercando di avere una riga con un solo nome ma che contenga anche gli altri numeri dei doppi.
    Quando ci sono nomi e cognomi uguali ma con città ho via diversa non li deve vedere come doppi unendo i numeri (nel file prova si capisce)
    Non è facile da spiegare nel file di prova che ho creato si capisce subito cosa intendo.
    C'è da considerare che questo procedimento mi serve per una grossa quantità di nomi anche 10000.
    Quindi non li posso fare uno ad uno.

    Aspetto Risposta
    Grazie in anticipo