Risultati da 1 a 24 di 24

Discussione: Dividere dati di un figlio su più fogli



  1. #1
    L'avatar di Barchetta
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    51013
    Età
    45
    Messaggi
    80
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    8

    Dividere dati di un figlio su più fogli

    Ciao, sono un utente medio e seguo i video su YouTube da dove ho migliorato (e non poco) le mie conoscenze sul mondo Excel. Avrei da porvi una richiesta su come 'spacchettare' dei dati di un foglio con diverse colonne in più fogli in base ad un criterio. Porto un esempio.
    Ho un foglio dati dove ho diverse colonne; colonna A: cliente con codice univoco; colonna B: articolo ordinato dal cliente; colonna C: quantità ordinata.
    La colonna A può essere ripetuta più volte, dipende da quanti articoli ha ordinato il cliente.
    Il dato della colonna B lo possiamo ritrovare più volte perché l'articolo ordinato può essere ordinato da più clienti ma mai per lo stesso cliente.
    La colonna C riguarda la quantità e quindi secondo me non è utilizzabile come criterio.

    La soluzione che vorrei trovare è una marco che riesca in base alla colonna A creare tanti fogli quanti sono i clienti, riportando tutti i dati (in questo caso le tre colonne, ma se sono di più non credo sia un problema se il filtro è sulla colonna A) a lui legati.

    Chiaro potrei fare una operazione manuale giocando con i filtri, ma è un lavoro lungo e sempre lo stesso. Una variabile, un giorno possono essere 3 clienti e il giorno dopo sono 10.

    Riconosco che non è una soluzione da Excel ma da un applicativo diverso (credo) ma così non avrei costi aggiuntivi.

    Ringraio tutti in anticipo per le risposte e auguro a tutti Buona Pasqua!
    Invia MPPM 

  2. #2
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3338
    Versione Office
    2013 PC
    Likes ricevuti
    481
    Likes dati
    49
    Citazione Originariamente Scritto da Barchetta Visualizza Messaggio
    Ciao, sono un utente medio e seguo i video su YouTube da dove ho migliorato (e non poco) le mie conoscenze sul mondo Excel. Avrei da porvi una richiesta su come 'spacchettare' dei dati di un foglio con diverse colonne in più fogli in base ad un criterio. Porto un esempio.
    Ho un foglio dati dove ho diverse colonne; colonna A: cliente con codice univoco; colonna B: articolo ordinato dal cliente; colonna C: quantità ordinata.
    La colonna A può essere ripetuta più volte, dipende da quanti articoli ha ordinato il cliente.
    Il dato della colonna B lo possiamo ritrovare più volte perché l'articolo ordinato può essere ordinato da più clienti ma mai per lo stesso cliente.
    La colonna C riguarda la quantità e quindi secondo me non è utilizzabile come criterio.

    La soluzione che vorrei trovare è una marco che riesca in base alla colonna A creare tanti fogli quanti sono i clienti, riportando tutti i dati (in questo caso le tre colonne, ma se sono di più non credo sia un problema se il filtro è sulla colonna A) a lui legati.

    Chiaro potrei fare una operazione manuale giocando con i filtri, ma è un lavoro lungo e sempre lo stesso. Una variabile, un giorno possono essere 3 clienti e il giorno dopo sono 10.

    Riconosco che non è una soluzione da Excel ma da un applicativo diverso (credo) ma così non avrei costi aggiuntivi.

    Ringraio tutti in anticipo per le risposte e auguro a tutti Buona Pasqua!
    Ciao,
    Se alleghi un file con qualche riga di dati (fasulli naturalmente) faciliti il lavoro di chi vuole aiutarti :242:

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)
    Invia MPPM 

  3. #3

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2807
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    978
    Visto che non hai postato un file di esempio mi sono preso la libertà di crearlo a mio piacimento:
    Codice: 
    Sub Genera()
    Dim uRiga As Long
    Dim iRow As Long
    Dim Matrix()
    Dim iCount As Long
    Dim iCol As Long
    
    
    ReDim Matrix(0)
    Matrix(0) = Foglio1.Range("A2")
    
    
    uRiga = Foglio1.Range("A" & Rows.Count).End(xlUp).Row
    For iRow = 3 To uRiga
        For i = 0 To UBound(Matrix())
            If Foglio1.Cells(iRow, 1) = Matrix(i) Then
                GoTo Successivo
            End If
        Next
        ReDim Preserve Matrix(i)
        Matrix(i) = Foglio1.Cells(iRow, 1)
    Successivo:
    Next
    For i = 0 To UBound(Matrix())
        Sheets.Add After:=ActiveSheet
        With ActiveSheet
            .Name = Matrix(i)
            .Range("A1") = "Cliente"
            .Range("B1") = "Articolo"
            .Range("C1") = "Quantità"
            iCount = 2
            For iRow = 2 To uRiga
                If Foglio1.Cells(iRow, 1) = Matrix(i) Then
                    For iCol = 1 To 3
                        .Cells(iCount, iCol) = Foglio1.Cells(iRow, iCol)
                    Next
                    iCount = iCount + 1
                End If
            Next
        End With
    Next
    Erase Matrix
    End Sub
    Fammi sapere se va bene
    File Allegati File Allegati
    Invia MPPM 

  4. I seguenti utenti hanno dato un "Like"


  5. #4
    L'avatar di Barchetta
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    51013
    Età
    45
    Messaggi
    80
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    8
    Ciao, è lui...mille grazie!!:23:
    Adesso lo devo adattare al mio file con più colonne ma credo di riuscire.
    Chiedo scusa di non aver postato un file di esempio, se dovesse ricapitare di chiedere aiuto sarò più preciso.
    Auguro a tutti Buona Pasqua.
    Garzie
    Invia MPPM 

  6. #5
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    417
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    636
    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Visto che non hai postato un file di esempio mi sono preso la libertà di crearlo a mio piacimento:
    Codice: 
    Sub Genera()
    Dim uRiga As Long
    Dim iRow As Long
    Dim Matrix()
    Dim iCount As Long
    Dim iCol As Long
    
    
    ReDim Matrix(0)
    Matrix(0) = Foglio1.Range("A2")
    
    
    uRiga = Foglio1.Range("A" & Rows.Count).End(xlUp).Row
    For iRow = 3 To uRiga
        For i = 0 To UBound(Matrix())
            If Foglio1.Cells(iRow, 1) = Matrix(i) Then
                GoTo Successivo
            End If
        Next
        ReDim Preserve Matrix(i)
        Matrix(i) = Foglio1.Cells(iRow, 1)
    Successivo:
    Next
    For i = 0 To UBound(Matrix())
        Sheets.Add After:=ActiveSheet
        With ActiveSheet
            .Name = Matrix(i)
            .Range("A1") = "Cliente"
            .Range("B1") = "Articolo"
            .Range("C1") = "Quantità"
            iCount = 2
            For iRow = 2 To uRiga
                If Foglio1.Cells(iRow, 1) = Matrix(i) Then
                    For iCol = 1 To 3
                        .Cells(iCount, iCol) = Foglio1.Cells(iRow, iCol)
                    Next
                    iCount = iCount + 1
                End If
            Next
        End With
    Next
    Erase Matrix
    End Sub
    Fammi sapere se va bene
    Ciao Rubik,
    La tua proposta funziona alla grande, ma se ripetuta và in errore ".Name = Matrix(i)"......
    Cosa devo correggere?
    Grazie e buona Pasquetta....
    Windows8.1 office 2010
    Invia MPPM 

  7. #6

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4016
    Versione Office
    2013
    Likes ricevuti
    1225
    Likes dati
    923
    Ciao a tutti,

    spero che Rubik (un saluto) non se la prenda se provo a rispondere al suo posto :32:

    @Vincenzo
    Va in errore perchè il foglio esiste già (con lo stesso nome), quindi potresti aggiungere un ciclo che ne controlla l'esistenza e in tal caso lo elimina per poi continuare con il codice originale.

    Le modifiche/aggiunte sono in rosso:

    Codice: 
    Sub Genera()
    Dim uRiga As Long
    Dim iRow As Long
    Dim Matrix()
    Dim iCount As Long
    Dim iCol As Long
    Dim j As Long
    
    
    ReDim Matrix(0)
    Matrix(0) = Foglio1.Range("A2")
    
    
    uRiga = Foglio1.Range("A" & Rows.Count).End(xlUp).Row
    For iRow = 3 To uRiga
        For i = 0 To UBound(Matrix())
            If Foglio1.Cells(iRow, 1) = Matrix(i) Then
                GoTo Successivo
            End If
        Next
        ReDim Preserve Matrix(i)
        Matrix(i) = Foglio1.Cells(iRow, 1)
    Successivo:
    Next
    For i = 0 To UBound(Matrix())
        For j = 1 To Sheets.Count
            If Sheets(j).Name = Matrix(i) Then
                Sheets(j).Delete
                GoTo crea_foglio
            End If
        Next j
    crea_foglio:
        Sheets.Add After:=ActiveSheet
        With ActiveSheet
            .Name = Matrix(i)
            .Range("A1") = "Cliente"
            .Range("B1") = "Articolo"
            .Range("C1") = "Quantità"
            iCount = 2
            For iRow = 2 To uRiga
                If Foglio1.Cells(iRow, 1) = Matrix(i) Then
                    For iCol = 1 To 3
                        .Cells(iCount, iCol) = Foglio1.Cells(iRow, iCol)
                    Next
                    iCount = iCount + 1
                End If
            Next
        End With
    Next
    Erase Matrix
    End Sub
    File Allegati File Allegati

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
    Invia MPPM 

  8. I seguenti utenti hanno dato un "Like"


  9. #7

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2807
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    978
    Citazione Originariamente Scritto da cromagno Visualizza Messaggio
    Ciao a tutti,

    spero che Rubik (un saluto) non se la prenda se provo a rispondere al suo posto :32:

    [...]
    [/CODE]
    Non c'è problema Tore, ottima soluzione.
    Invia MPPM 

  10. #8
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    417
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    636
    Citazione Originariamente Scritto da cromagno Visualizza Messaggio
    Ciao a tutti,

    spero che Rubik (un saluto) non se la prenda se provo a rispondere al suo posto :32:

    @Vincenzo
    Va in errore perchè il foglio esiste già (con lo stesso nome), quindi potresti aggiungere un ciclo che ne controlla l'esistenza e in tal caso lo elimina per poi continuare con il codice originale.

    Le modifiche/aggiunte sono in rosso:

    Codice: 
    Sub Genera()
    Dim uRiga As Long
    Dim iRow As Long
    Dim Matrix()
    Dim iCount As Long
    Dim iCol As Long
    Dim j As Long
    
    
    ReDim Matrix(0)
    Matrix(0) = Foglio1.Range("A2")
    
    
    uRiga = Foglio1.Range("A" & Rows.Count).End(xlUp).Row
    For iRow = 3 To uRiga
        For i = 0 To UBound(Matrix())
            If Foglio1.Cells(iRow, 1) = Matrix(i) Then
                GoTo Successivo
            End If
        Next
        ReDim Preserve Matrix(i)
        Matrix(i) = Foglio1.Cells(iRow, 1)
    Successivo:
    Next
    For i = 0 To UBound(Matrix())
        For j = 1 To Sheets.Count
            If Sheets(j).Name = Matrix(i) Then
                Sheets(j).Delete
                GoTo crea_foglio
            End If
        Next j
    crea_foglio:
        Sheets.Add After:=ActiveSheet
        With ActiveSheet
            .Name = Matrix(i)
            .Range("A1") = "Cliente"
            .Range("B1") = "Articolo"
            .Range("C1") = "Quantità"
            iCount = 2
            For iRow = 2 To uRiga
                If Foglio1.Cells(iRow, 1) = Matrix(i) Then
                    For iCol = 1 To 3
                        .Cells(iCount, iCol) = Foglio1.Cells(iRow, iCol)
                    Next
                    iCount = iCount + 1
                End If
            Next
        End With
    Next
    Erase Matrix
    End Sub
    Ciao Cromagno,
    Ciao Rubik
    si potrebbe fare un ciclo che controlla l'esistenza del foglio, se esiste aggiorna i dati, se il foglio non esiste lo crea...invece di cancellare tutti i fogli per poi ricrearli?
    Grazie
    Windows8.1 office 2010
    Invia MPPM 

  11. #9

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2807
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    978
    Bisogna verificare se un foglio esiste già tramite una function tipo:
    Codice: 
    Private Function Esiste(NomeFoglio as worksheet) as boolean
    Dim fgl as worksheet
    
    For each fgl in worksheets
         If fgl.name=Nomefoglio then
              Esiste=true
              Exit function
         End if
    Next
    End function
    (Spero di non aver sbagliato qualcosa visto che sono fuori e non posso verificare)

    Inviato dal mio Nexus 7 utilizzando Tapatalk
    Invia MPPM 

  12. I seguenti utenti hanno dato un "Like"


  13. #10
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    417
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    636
    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Bisogna verificare se un foglio esiste già tramite una function tipo:
    Codice: 
    Private Function Esiste(NomeFoglio as worksheet) as boolean
    Dim fgl as worksheet
    
    For each fgl in worksheets
         If fgl.name=Nomefoglio then
              Esiste=true
              Exit function
         End if
    Next
    End function
    (Spero di non aver sbagliato qualcosa visto che sono fuori e non posso verificare)

    Inviato dal mio Nexus 7 utilizzando Tapatalk
    Ciao Rubik,
    Ma il codice da te suggerito dove lo devo aggiungere?
    Io volevo che attivando il codice suggerito da cromagno mi creasse nuovi fogli se non sono presenti e in quelli gia presenti mi aggiornasse solo i dati
    lasciando invariato il nome del foglio......
    Grazie ancora per la vostra pazienza....
    Windows8.1 office 2010
    Invia MPPM 

  14. #11

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2807
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    978
    Ecco il file corretto, prova adesso:
    Codice: 
    Sub Genera()
    Dim uRiga As Long
    Dim iRow As Long
    Dim Matrix()
    Dim iCount As Long
    Dim iCol As Long
    Dim i As Long
    
    
    ReDim Matrix(0)
    Matrix(0) = Foglio1.Range("A2")
    
    
    uRiga = Foglio1.Range("A" & Rows.Count).End(xlUp).Row
    For iRow = 3 To uRiga
        For i = 0 To UBound(Matrix())
            If Foglio1.Cells(iRow, 1) = Matrix(i) Then
                GoTo Successivo
            End If
        Next
        ReDim Preserve Matrix(i)
        Matrix(i) = Foglio1.Cells(iRow, 1)
    Successivo:
    Next
    For i = 0 To UBound(Matrix())
        With Sheets(Matrix(i))
            If Esiste(Matrix(i)) Then
                .Activate
            Else
                Sheets.Add After:=ActiveSheet
            End If
            .Name = Matrix(i)
            .Range("A1") = "Cliente"
            .Range("B1") = "Articolo"
            .Range("C1") = "Quantità"
            iCount = 2
            For iRow = 2 To uRiga
                If Foglio1.Cells(iRow, 1) = Matrix(i) Then
                    For iCol = 1 To 3
                        .Cells(iCount, iCol) = Foglio1.Cells(iRow, iCol)
                    Next
                    iCount = iCount + 1
                End If
            Next
        End With
    Next
    Erase Matrix
    End Sub
    
    
    Private Function Esiste(NomeFoglio) As Boolean
    Dim fgl As Worksheet
    
    
    For Each fgl In Worksheets
         If fgl.Name = NomeFoglio Then
              Esiste = True
              Exit Function
         End If
    Next
    End Function
    File Allegati File Allegati
    Invia MPPM 

  15. I seguenti utenti hanno dato un "Like"


  16. #12
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    417
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    636
    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Ecco il file corretto, prova adesso:
    Codice: 
    Sub Genera()
    Dim uRiga As Long
    Dim iRow As Long
    Dim Matrix()
    Dim iCount As Long
    Dim iCol As Long
    Dim i As Long
    
    
    ReDim Matrix(0)
    Matrix(0) = Foglio1.Range("A2")
    
    
    uRiga = Foglio1.Range("A" & Rows.Count).End(xlUp).Row
    For iRow = 3 To uRiga
        For i = 0 To UBound(Matrix())
            If Foglio1.Cells(iRow, 1) = Matrix(i) Then
                GoTo Successivo
            End If
        Next
        ReDim Preserve Matrix(i)
        Matrix(i) = Foglio1.Cells(iRow, 1)
    Successivo:
    Next
    For i = 0 To UBound(Matrix())
        With Sheets(Matrix(i))
            If Esiste(Matrix(i)) Then
                .Activate
            Else
                Sheets.Add After:=ActiveSheet
            End If
            .Name = Matrix(i)
            .Range("A1") = "Cliente"
            .Range("B1") = "Articolo"
            .Range("C1") = "Quantità"
            iCount = 2
            For iRow = 2 To uRiga
                If Foglio1.Cells(iRow, 1) = Matrix(i) Then
                    For iCol = 1 To 3
                        .Cells(iCount, iCol) = Foglio1.Cells(iRow, iCol)
                    Next
                    iCount = iCount + 1
                End If
            Next
        End With
    Next
    Erase Matrix
    End Sub
    
    
    Private Function Esiste(NomeFoglio) As Boolean
    Dim fgl As Worksheet
    
    
    For Each fgl In Worksheets
         If fgl.Name = NomeFoglio Then
              Esiste = True
              Exit Function
         End If
    Next
    End Function
    Perfetto RubiK,
    Mille Grazie:255::246::255:
    Alla prossima.....
    Windows8.1 office 2010
    Invia MPPM 

  17. #13
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1125
    Ciao a tutti e complimenti per le vostre soluzioni VBA
    Dopo che ho visto il file di Rubik ho capito bene la domanda e per gli amanti delle formule ecco la mia soluzione:

    Incollare in tutte le celle A2 di ogni foglio questa formule trascinarla in basso e a destra
    =SE.ERRORE(INDICE(Foglio1!A$2:A$16;AGGREGA(15;6;(RIF.RIGA(Foglio1!$A$2:$A$16)-RIF.RIGA(Foglio1!$A$2)+1)/(Foglio1!$A$2:$A$16=STRINGA.ESTRAI(CELLA("filename";A1);TROVA("]";CELLA("filename";A1))+1;255));RIGHE($A$1:A1)));"")


    PS la parte in rosso è il criterio che mi restituisce il nome del foglio tutto il resto è facilissimo l'abbiamo visto tante volte
    Un saluto a tutti

    File Allegati File Allegati
    Invia MPPM 

  18. I seguenti 2 utenti hanno dato un "Like" a Gerardo Zuccalà per questo post:


  19. #14
    L'avatar di Barchetta
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    51013
    Età
    45
    Messaggi
    80
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    8
    Ciao, la formula funziona se abbiamo già creato tutti i fogli, solo che se i fogli hanno un nome (pippo, pluto ecc) tutto ok, ma se i fogli sono nominati con nnumero non restituisce niente a meno che la cella del criterio di ricerca non sia un numero in formato testo con aprostrofo iniziale, allego nuovamente il file creato dal mitico:23: Gerry dove ho cambiamo il nome del foglio Minni in 201 e nel primo foglio (quelli dei dati) un vaolore "cliete Minni" in 201, la formula restitusce vuoto.
    Un altra domanda, se io volessi effettuare la ricerca per 'articolo' (ecco perchè il foglio può avere un nome numerico) e la colonna non è la pima ma la seconda o quarta o quinta insomma a metà delle colonne del file, si potrebbe gestire anche con una formula restituendo i dati delle colonne antecedenti e quelle seguenti?.
    Grazie
    File Allegati File Allegati
    Invia MPPM 

  20. #15
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1125
    Ciao quando i nomi dei fogli sono numeri, fai questa piccola correzione alla formula (vedi in rosso)
    Fammi sapere!

    =SE.ERRORE(INDICE(Foglio1!A$2:A$16;AGGREGA(15;6;(RIF.RIGA(Foglio1!$A$2:$A$16)-RIF.RIGA(Foglio1!$A$2)+1)/(Foglio1!$A$2:$A$16=STRINGA.ESTRAI(CELLA("filename";A1);TROVA("]";CELLA("filename";A1))+1;255)
    +0);RIGHE($A$1:A1)));"")


    Invia MPPM 

  21. #16
    L'avatar di Barchetta
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    51013
    Età
    45
    Messaggi
    80
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    8
    giusto, un valore sommato a zero trasforma il valore in numerico....forse mi sono un po' incartato ma ho capito.
    Perdona l'insistenza e se il critierio di ricerca non fosse la colonna A ma la colonna B e mi deve restituire sia i valori della colonna A e C Oltre chiaramente a quella della B, si riesce con una formula oppure il VBA scritto da Rubik e Cromagno è l'unico modo?
    Ringrazio anticipatamente.
    Invia MPPM 

  22. #17
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1125
    Ciao barchetta
    Forse si potrebbe fare anche con le formule, certo il VBA è molto più dinamico e versatile, comunque tentar non nuoce, prova a mettere un file con tutte le possibili casistiche cosi da vedere cosa è meglio fare.
    aspetto
    Invia MPPM 

  23. #18
    L'avatar di Barchetta
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    51013
    Età
    45
    Messaggi
    80
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    8
    Ciao, allego file.
    Questo file rispecchia molto il reale ho cancellato alcune colonne finali ma non cambia la sostazna.
    Il criterio di ricerca è la colonna E (FILIALE), io creo "N" fogli per tutti le filaili che esistono (poi se non sono presenti ordini la formula non riporta niente) e in base al numero di filiale mi riporta tutti i dati delle colonne (prima e dopo) presenti nel file creato in autoamtico.
    File Allegati File Allegati
    Invia MPPM 

  24. #19
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1125
    Ciao Visto che la condizione si è spostata nella colonna E basta cambiare la parte in rosso

    Incolla questa formula in A2 e trascinala a destra e in basso( ripeti l'operazione per tutti i fogli)


    =SE.ERRORE(INDICE(Foglio1!A$2:A$16;AGGREGA(15;6;(RIF.RIGA(Foglio1!$A$2:$A$16)-RIF.RIGA(Foglio1!$A$2)+1)/(Foglio1!$E$2:$E$16=STRINGA.ESTRAI(CELLA("filename";A1);TROVA("]";CELLA("filename";A1))+1;255)+0);RIGHE($A$1:A1)));"")
    File Allegati File Allegati
    Invia MPPM 

  25. #20
    L'avatar di Barchetta
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    51013
    Età
    45
    Messaggi
    80
    Versione Office
    Excel 2013
    Likes ricevuti
    0
    Likes dati
    8
    Gracie a tutti, an he Di aver messy il tread come risolto.
    Invia MPPM 

  26. #21
    L'avatar di Laila
    Clicca e Apri
    Data Registrazione
    Apr 2016
    Località
    Milano
    Messaggi
    2
    Versione Office
    MAC
    Likes ricevuti
    0
    Likes dati
    0

    Re: Dividere dati di un figlio su più fogli

    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Ecco il file corretto, prova adesso:
    Codice: 
    Sub Genera()
    Dim uRiga As Long
    Dim iRow As Long
    Dim Matrix()
    Dim iCount As Long
    Dim iCol As Long
    Dim i As Long
    
    
    ReDim Matrix(0)
    Matrix(0) = Foglio1.Range("A2")
    
    
    uRiga = Foglio1.Range("A" & Rows.Count).End(xlUp).Row
    For iRow = 3 To uRiga
        For i = 0 To UBound(Matrix())
            If Foglio1.Cells(iRow, 1) = Matrix(i) Then
                GoTo Successivo
            End If
        Next
        ReDim Preserve Matrix(i)
        Matrix(i) = Foglio1.Cells(iRow, 1)
    Successivo:
    Next
    For i = 0 To UBound(Matrix())
        With Sheets(Matrix(i))
            If Esiste(Matrix(i)) Then
                .Activate
            Else
                Sheets.Add After:=ActiveSheet
            End If
            .Name = Matrix(i)
            .Range("A1") = "Cliente"
            .Range("B1") = "Articolo"
            .Range("C1") = "Quantità"
            iCount = 2
            For iRow = 2 To uRiga
                If Foglio1.Cells(iRow, 1) = Matrix(i) Then
                    For iCol = 1 To 3
                        .Cells(iCount, iCol) = Foglio1.Cells(iRow, iCol)
                    Next
                    iCount = iCount + 1
                End If
            Next
        End With
    Next
    Erase Matrix
    End Sub
    
    
    Private Function Esiste(NomeFoglio) As Boolean
    Dim fgl As Worksheet
    
    
    For Each fgl In Worksheets
         If fgl.Name = NomeFoglio Then
              Esiste = True
              Exit Function
         End If
    Next
    End Function

    Ciao, è da poco che uso le macro e non riesco a far funzionare questa.
    Ho provato ad aggiungere una riga in foglio1 con un nuovo cliente ma invece di generare un nuovo foglio dà errore runtime9 ... cosa ho sbagliato?
    Invia MPPM 

  27. #22

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2807
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    978

    Re: Dividere dati di un figlio su più fogli

    Il ciclo inizia da A2 a scendere. Prova a scrivere i nomi in questo range.

    Inviato dal mio GT-I9301I utilizzando Tapatalk
    Invia MPPM 

  28. #23
    L'avatar di Laila
    Clicca e Apri
    Data Registrazione
    Apr 2016
    Località
    Milano
    Messaggi
    2
    Versione Office
    MAC
    Likes ricevuti
    0
    Likes dati
    0

    Re: Dividere dati di un figlio su più fogli

    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Il ciclo inizia da A2 a scendere. Prova a scrivere i nomi in questo range.

    Inviato dal mio GT-I9301I utilizzando Tapatalk


    E' quello che ho fatto :187:
    Ho anche provato a prendere il tuo file, eliminare l'ultimo foglio (Qui quo qua) e far eseguire la macro ma mi da errore. Finchè trova i fogli funziona, quando ne deve creare uno si blocca
    Invia MPPM 

  29. #24

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4016
    Versione Office
    2013
    Likes ricevuti
    1225
    Likes dati
    923

    Re: Dividere dati di un figlio su più fogli

    Ciao a tutti,

    @Laila
    Apri una nuova discussione, non accodarti a discussioni già risolte.

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
    Invia MPPM 

Discussioni Simili

  1. dividere i giorni in più celle
    Di givi79 nel forum Domande su Excel in generale
    Risposte: 35
    Ultimo Messaggio: 04/03/17, 20:20
  2. dividere foglio excel
    Di homer75 nel forum Domande su Excel in generale
    Risposte: 12
    Ultimo Messaggio: 30/12/16, 16:39
  3. [Risolto] dividere numeri e testo
    Di mapero nel forum Domande su Excel in generale
    Risposte: 18
    Ultimo Messaggio: 02/12/16, 21:57
  4. [Risolto] Avendo molti codici padri con più figli, come selezionare la coppia padre-figlio con valore minore?
    Di Giuseppe1122 nel forum Domande su Excel in generale
    Risposte: 16
    Ultimo Messaggio: 22/11/16, 20:30
  5. dividere celle unite
    Di mapero nel forum Domande su Excel in generale
    Risposte: 11
    Ultimo Messaggio: 04/05/16, 02:04

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •