Trasporto automatico di determinate righe in un altro foglio excel

Anonimo
2016-02-29T10:20:07+00:00

buongiorno a tutti,

premettendo che utilizzo da poco excel e che conosco solo le funzioni base, ultimamente mi sono imbattuto in un problema che non so se sia possibile risolvere. 

Nel mio file io inserisco tutti i dati in un foglio, vorrei chiedere se è possibile fare in modo di copiare direttamente in un altro foglio tutte le righe che hanno nella colonna G un determinato dato (es "Nicola").

Quello che vorrei ottenere alla fine è un file dove io inserisco i dati in un foglio e excel automaticamente mi copia tutti i dati di "Nicola" in un altro.

E' possibile fare questo? se si, posso avere le istruzioni su come fare ?

Grazie

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2016-02-29T11:15:59+00:00

Ciao Davide,

premettendo che utilizzo da poco excel e che conosco solo le funzioni base, ultimamente mi sono imbattuto in un problema che non so se sia possibile risolvere. 

Nel mio file io inserisco tutti i dati in un foglio, vorrei chiedere se è possibile fare in modo di copiare direttamente in un altro foglio tutte le righe che hanno nella colonna G un determinato dato (es "Nicola").

Quello che vorrei ottenere alla fine è un file dove io inserisco i dati in un foglio e excel automaticamente mi copia tutti i dati di "Nicola" in un altro.

E' possibile fare questo? se si, posso avere le istruzioni su come fare ?

Prova qualcosa del genere:

  • Fai clic dx sulla linguetta del foglio interessato
  • Seleziona l'opzione Visualizza Codicedal****menu contestuale risultante
  • Incolla il seguente codice:

'=========>>

Option Explicit

'--------->>

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim destSH As Worksheet

    Dim srcRng As Range, destRng As Range, rCell As Range

    Dim LRow As Long

    Const sFoglioDestinazione As String = "Foglio2"

    Const sColonna As String = "G:G"

    Const sParolaChiave As String = "Nicola"

    Set srcRng = Intersect(Me.Columns(sColonna), Target)

    If Not srcRng Is Nothing Then

        Set destSH = ThisWorkbook.Sheets(sFoglioDestinazione)

        With destSH

            LRow = LastRow(destSH, .Columns("A:A"))

            Set destRng = destSH.Range("A" & LRow + 1)

        End With

        For Each rCell In srcRng.Cells

            With rCell

                If UCase(.Value) = UCase(sParolaChiave) Then

                    .EntireRow.Copy Destination:=destRng

                    Set destRng = destRng.Offset(1)

                End If

            End With

        Next rCell

    End If

End Sub
'<<=========

  • Alt+F11 per aprire l'editor di VBA
  • Alt+IMper inserire un nuovo modulo di codice
  • Nel nuovo modulo vuoto, incolla il seguente codice:

'=========>>

Option Explicit

'--------->>

Public Function LastRow(SH As Worksheet, _

                        Optional Rng As Range, _

                        Optional minRow As Long = 1)

    If Rng Is Nothing Then

        Set Rng = SH.Cells

    End If

    On Error Resume Next

    LastRow = Rng.Find(What:="*", _

                       after:=Rng.Cells(1), _

                       Lookat:=xlPart, _

                       LookIn:=xlFormulas, _

                       SearchOrder:=xlByRows, _

                       SearchDirection:=xlPrevious, _

                       MatchCase:=False).Row

    On Error GoTo 0

    If LastRow < minRow Then

        LastRow = minRow

    End If

End Function

'<<========= 

  • Alt+Q per chiudere l'editor di VBA e tornare a Excel
  • Salva il file con l’estensione xlsm

Ora, ogni volta che la parola Nicola venga inserito nella colonna G del primo foglio, la riga corrispondente sarà copiata nella prima riga vuota del secondo foglio.

Potresti scaricare il mio file di prova Davide20160229.xlsm a:

https://www.dropbox.com/s/8l8vm7qez00quoe/Davide20160229.xlsm?dl=0

===

Regards,

Norman

La risposta è stata utile?

2 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-02-29T12:06:53+00:00

    Ciao Davide,

    Ti ringrazio per il cortese riscontro.

    Per chiudere questo thread, vorrei gentilmente chiederti di segnare la mia risposta come Risposta. In questo modo, tu aiuterai anche coloro che potrebbero cercare soluzioni ai problemi simili negli archivi della Community.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-02-29T11:54:03+00:00

    Grazie mille

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-02-29T11:38:34+00:00

    Ciao Davide,

    Va notato che il codice suggerito risponde all'inserimento della parola chiave nella colonna G; non c'è alcun controllo per verificare se tale riga sia stata copiata in precedenza. Pertanto, se la parola chiave fosse inserita o modificata più volte, quella riga sarebbe copiata più volte. Se questo potrebbe essere un problema, ci sono due possibili soluzioni:

    • I dati sul secondo foglio potrebbero essere  cancellati,  ad ogni inserimento della parola chiave, e poi essere ricostruiti, copiando ogni riga sul primo foglio che contiene la parola chiave nella colonna G
    • In alternativa, se ci fosse un descrittore unico in ogni riga, ad esempio un numero conto, il codice potrebbe essere modificato per verificare se la riga in questione fosse già stata copiata.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento