Risultati da 1 a 14 di 14

Discussione: Creare macro che gestisce celle unite



  1. #1
    L'avatar di Keishusan
    Clicca e Apri
    Data Registrazione
    Jun 2016
    Località
    Rimini
    Messaggi
    35
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    0

    Creare macro che gestisce celle unite

    Ciao a tutti,
    devo risolvere un problema un po' complesso, allego due file di esempio per maggiore comprensione.

    Nel file "Orari" c'è una lista di nomi con degli orari (che non posso modificare), ogni nome è composto da tre righe, la cella del nome è unita.

    Nel file "Macro" (che vorrei creare) c'è la lista dei nomi "scelti" che mi interessa visionare. Filtrando solo i nomi "scelti" vorrei copiare solo le righe delle persone "scelte".

    Alla fine vorrei eliminare le righe in eccesso che ci sono dopo i nomi.

    Grazie mille

    P.S. Il problema principale che riscontro è il filtraggio dei nomi, dovrei riempire le caselle vuote in modo che il filtraggio funzioni, ma probabilmente complico le cose...
    File Allegati File Allegati

  2. #2
    L'avatar di Anthony
    Clicca e Apri
    Data Registrazione
    Sep 2016
    Località
    Ivrea (TO)
    Messaggi
    604
    Versione Office
    2003-2010-2016
    Likes ricevuti
    354
    Likes dati
    48

    Re: Creare macro che gestisce celle unite

    Prova con questa macro, da inserire all'interno del file che hai chiamato Macro, in un modulo standard del vba:
    Codice: 
    Sub QueryNomi()
    Dim WArea As Worksheet, TArea As Worksheet, myMatch
    '
    Set WArea = Workbooks("byKEYSHUSAN-FE_Orari_B60920.xlsx").Sheets("ORARI")   '<<<
    Set TArea = ThisWorkbook.Sheets("RISULTATO FINALE")                         '<<<
    '
    Sheets("MACRO").Select
    TArea.Range(TArea.Cells(6, 2), TArea.Cells(Rows.Count, "E").End(xlUp)).Clear
    For i = 6 To Cells(Rows.Count, "B").End(xlUp).Row
        If Not IsError(myMatch) Then
            myMatch = Application.Match(Cells(i, 2), WArea.Range("B:B"), 0)
            TArea.Range("B" & TArea.Cells(Rows.Count, "E").End(xlUp).Offset(1, 0).Row).Resize(3, 4).Value = WArea.Cells(myMatch, 2).Resize(3, 4).Value
        End If
    Next i
    End Sub
    Le righe marcate <<< vanno modificate per contenere rispettivamente:
    -nome file /nome foglio contenente gli orari
    -nome del foglio in cui creare il riepilogo

    Il file degli orari deve risultare aperto quando lanci la macro.

    NB: odio abbastanza le celle unite da non inserirle nel foglio del riepilogo, ma credo che la leggibilita' sia sufficiente.

    Non ho capito la richiesta di "eliminare le righe in eccesso che ci sono dopo i nomi": visto che sono righe vuote, cosa bisognerebbe eliminare?

    Il file andra' salvato in formato Macro enabled (.xlsm)

    Ciao

  3. I seguenti utenti hanno dato un "Like"


  4. #3
    L'avatar di Keishusan
    Clicca e Apri
    Data Registrazione
    Jun 2016
    Località
    Rimini
    Messaggi
    35
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    0

    Re: Creare macro che gestisce celle unite

    Ciao, grazie mille ma forse ho spiegato male. Purtroppo il file è molto complesso e devo essere in grado di filtrare le righe con i nomi.
    Forse è più semplice questa strada, creare una macro che mi permetta di fare questa conversione (vedi file) dalla colonna B alla colonna D, poi è tutto più facile.
    Premetto che la lista di nomi può essere molto lunga.

    Grazie ancora
    File Allegati File Allegati

  5. #4
    L'avatar di Anthony
    Clicca e Apri
    Data Registrazione
    Sep 2016
    Località
    Ivrea (TO)
    Messaggi
    604
    Versione Office
    2003-2010-2016
    Likes ricevuti
    354
    Likes dati
    48

    Re: Creare macro che gestisce celle unite

    Citazione Originariamente Scritto da Keishusan
    Nel file "Orari" c'è una lista di nomi con degli orari (che non posso modificare), ogni nome è composto da tre righe, la cella del nome è unita.

    Nel file "Macro" (che vorrei creare) c'è la lista dei nomi "scelti" che mi interessa visionare. Filtrando solo i nomi "scelti" vorrei copiare solo le righe delle persone "scelte"
    Questo e' quello che fa la Sub QueryNomi pubblicata.

    Se vuoi inceve N-uplicare il contenuto della colonna B, allora lo puoi fare con formule; es, con riferimento al contenuto del file pubblicato, in D6
    Codice: 
    =SE(B6<>"";B6;D5)
    Poi copia verso il basso q.b.

    Oppure con macro:
    Codice: 
    Sub NUplica()
    src = "B"       '<<< La colonna iniziale con i nomi
    dst = "E"       '<<< La colonna dove ricostruire l'elenco
    '
    Cells(1, dst).EntireColumn.ClearContents
    For i = 1 To Cells(Rows.Count, src).End(xlUp).Row + 10
        If Cells(i, 2) <> "" Then
            Cells(i, 2).Select
            aaa = Selection.Rows.Count
            Cells(i, dst).Resize(Selection.Rows.Count, 1).Value = Cells(i, 2)
        End If
    Next i
    End Sub
    Le istruzioni marcate <<< vanno modificate secondo i commenti

    Ciao

  6. I seguenti 2 utenti hanno dato un "Like" a Anthony per questo post:


  7. #5
    L'avatar di Keishusan
    Clicca e Apri
    Data Registrazione
    Jun 2016
    Località
    Rimini
    Messaggi
    35
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    0

    Re: Creare macro che gestisce celle unite

    Grazie mille ;-)

  8. #6
    L'avatar di Keishusan
    Clicca e Apri
    Data Registrazione
    Jun 2016
    Località
    Rimini
    Messaggi
    35
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    0

    Re: Creare macro che gestisce celle unite

    Citazione Originariamente Scritto da Anthony Visualizza Messaggio
    Questo e' quello che fa la Sub QueryNomi pubblicata.

    Se vuoi inceve N-uplicare il contenuto della colonna B, allora lo puoi fare con formule; es, con riferimento al contenuto del file pubblicato, in D6
    Codice: 
    =SE(B6<>"";B6;D5)
    Poi copia verso il basso q.b.

    Oppure con macro:
    Codice: 
    Sub NUplica()
    src = "B"       '<<< La colonna iniziale con i nomi
    dst = "E"       '<<< La colonna dove ricostruire l'elenco
    '
    Cells(1, dst).EntireColumn.ClearContents
    For i = 1 To Cells(Rows.Count, src).End(xlUp).Row + 10
        If Cells(i, 2) <> "" Then
            Cells(i, 2).Select
            aaa = Selection.Rows.Count
            Cells(i, dst).Resize(Selection.Rows.Count, 1).Value = Cells(i, 2)
        End If
    Next i
    End Sub
    Le istruzioni marcate <<< vanno modificate secondo i commenti

    Ciao
    Si può limitare questo ciclo for per le prime 300 righe e basta? Può essere che ci metta molto? Grazie mille

  9. #7
    L'avatar di Anthony
    Clicca e Apri
    Data Registrazione
    Sep 2016
    Località
    Ivrea (TO)
    Messaggi
    604
    Versione Office
    2003-2010-2016
    Likes ricevuti
    354
    Likes dati
    48

    Re: Creare macro che gestisce celle unite

    Citazione Originariamente Scritto da Keishusan Visualizza Messaggio
    Si può limitare questo ciclo for per le prime 300 righe e basta? Può essere che ci metta molto? Grazie mille
    Secondo me la Sub NUplica impieghera' meno di 1 sec per gestire 1000 righe; ma le prove dovresti farle tu...

  10. #8
    L'avatar di Keishusan
    Clicca e Apri
    Data Registrazione
    Jun 2016
    Località
    Rimini
    Messaggi
    35
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    0

    Re: Creare macro che gestisce celle unite

    L'ho provato e ci mette molto tempo ad elaborare le righe, non so perché...

  11. #9
    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
    1126

    Re: Creare macro che gestisce celle unite

    Ciao Ragazzi
    Anche se questa è la sezione VBA, mi sono divertito a creare la mia formuletta
    Solo che le formule vedono le celle unite come fumo negli occhi e quindi ho disposto i dati diversamente senza celle appunto, in questo modo ( vedi immagine) se questa disposizione va bene si può fare cosi,

    In D6 metti questa formula e trascinala giù

    =INDICE($B$6:$B$20;RIGHE($D$5:D7)/3)

    Mi raccomando togli anche le "celle unite" nelle intestazione di campo "Dipendente"

    Un saluto

    B
    C
    D
    4
    DIPENDENTE DIPENDENTE
    5
    6
    MARIO
    MARIO
    7
    PAOLO
    MARIO
    8
    FRANCESCO
    MARIO
    9
    FILIPPO
    PAOLO
    10
    CARLO
    PAOLO
    11
    PAOLO
    12
    FRANCESCO
    13
    FRANCESCO
    14
    FRANCESCO
    15
    FILIPPO
    16
    FILIPPO
    17
    FILIPPO
    18
    CARLO
    19
    CARLO
    20
    CARLO

  12. #10
    L'avatar di Keishusan
    Clicca e Apri
    Data Registrazione
    Jun 2016
    Località
    Rimini
    Messaggi
    35
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    0

    Re: Creare macro che gestisce celle unite

    Citazione Originariamente Scritto da Gerardo Zuccalà Visualizza Messaggio
    Ciao Ragazzi
    Anche se questa è la sezione VBA, mi sono divertito a creare la mia formuletta
    Solo che le formule vedono le celle unite come fumo negli occhi e quindi ho disposto i dati diversamente senza celle appunto, in questo modo ( vedi immagine) se questa disposizione va bene si può fare cosi,

    In D6 metti questa formula e trascinala giù

    =INDICE($B$6:$B$20;RIGHE($D$5:D7)/3)

    Mi raccomando togli anche le "celle unite" nelle intestazione di campo "Dipendente"

    Un saluto
    Ciao, se tolgo l'unione celle compare solo un nome, non viene ripetuto tre volte.

  13. #11
    L'avatar di Keishusan
    Clicca e Apri
    Data Registrazione
    Jun 2016
    Località
    Rimini
    Messaggi
    35
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    0

    Re: Creare macro che gestisce celle unite

    Citazione Originariamente Scritto da Anthony Visualizza Messaggio
    Secondo me la Sub NUplica impieghera' meno di 1 sec per gestire 1000 righe; ma le prove dovresti farle tu...
    Oltre a metterci molto non ho capito questa riga di codice: "aaa = Selection.Rows.Count"

  14. #12
    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
    1126

    Re: Creare macro che gestisce celle unite

    Citazione Originariamente Scritto da Keishusan Visualizza Messaggio
    Ciao, se tolgo l'unione celle compare solo un nome, non viene ripetuto tre volte.
    A me fuziona forse non hai messo bene la formula
    Guarda allegato
    fammi sapere
    Un saluto
    File Allegati File Allegati

  15. #13
    L'avatar di Anthony
    Clicca e Apri
    Data Registrazione
    Sep 2016
    Località
    Ivrea (TO)
    Messaggi
    604
    Versione Office
    2003-2010-2016
    Likes ricevuti
    354
    Likes dati
    48

    Re: Creare macro che gestisce celle unite

    C'e' un messaggio di Gerardo prima di questo, non perderlo.

    L'ho provato e ci mette molto tempo ad elaborare le righe, non so perché...
    A me con 500 nomi ha impiegato meno di 500 msec.
    Potrebbero esserci nel tuo foglio delle macro di Evento che scattano sul WorksheetSelectionChange o su WorksheetChange, o delle formule che lavorano sull'elenco che si va a compilare...
    Modifica la macro come segue:

    Codice: 
    Sub NUplica()
    
    src = "B"       '<<< La colonna iniziale con i nomi
    dst = "E"       '<<< La colonna dove ricostruire l'elenco
    '
    ''' TRE RIGHE AGGIUNTE:
    'Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual
    '
    Cells(1, dst).EntireColumn.ClearContents
    For i = 1 To Cells(Rows.Count, src).End(xlUp).Row + 10
        If Cells(i, 2) <> "" Then
            Cells(i, 2).Select
    '        aaa = Selection.Rows.Count
            Cells(i, dst).Resize(Selection.Rows.Count, 1).Value = Cells(i, 2)
        End If
    Next i
    ''' ALTRE TRE RIGHE AGGIUNTE:
    'Application.ScreenUpdating = False
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
    '
    End Sub
    Oltre a metterci molto non ho capito questa riga di codice: "aaa = Selection.Rows.Count"
    L'istruzione serviva a calcolare quante righe erano Unite, ma non serve perche' ho usato il calcolo direttamente "all'interno" della Resize della riga successiva. Insomma era un avanzo delle prove.
    Nel codice di sopra l'ho quindi eliminata dall'esecuzione.

    Ciao

  16. I seguenti utenti hanno dato un "Like"


  17. #14
    L'avatar di Keishusan
    Clicca e Apri
    Data Registrazione
    Jun 2016
    Località
    Rimini
    Messaggi
    35
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    0

    Re: Creare macro che gestisce celle unite

    Grazie mille! ;-)

Discussioni Simili

  1. Trasportare celle unite a celle singole
    Di Catwoman nel forum Domande su Excel in generale
    Risposte: 21
    Ultimo Messaggio: 24/08/16, 19:00
  2. Copiare celle unite
    Di liuno nel forum Domande su Excel in generale
    Risposte: 8
    Ultimo Messaggio: 07/08/16, 19:19
  3. Copiare celle unite
    Di liuno nel forum Domande su Excel in generale
    Risposte: 2
    Ultimo Messaggio: 06/08/16, 20:46
  4. Somma celle e risultato in celle unite
    Di jigen nel forum Domande su Excel VBA e MACRO
    Risposte: 10
    Ultimo Messaggio: 14/07/16, 10:48
  5. Risposte: 16
    Ultimo Messaggio: 26/02/16, 15:14

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
  •