Copiare automaticamente righe da un foglio ad un altro

Anonimo
2012-07-30T15:44:59+00:00

Ciao a tutti,

premetto che non so utilizzare Excel se non nelle sue funzionalità base ma attualmente sto lavorando su un file molto complesso che fa da recap di tutte le selezioni di personale attive nell'azienda in cui lavoro. Il file è composto da più fogli nella seguente maniera:

  • foglio di "riepilogo" in cui nella riga viene specificata la posizione cercata e nelle colonne alcune informazioni aggiuntive (codice ricerca, data di inizio, deadline, manager di riferimento, costo etc). Se poi clicchi sul nome della ricerca si apre un foglio specifico (vedi voce seguente)
  • foglio specifico in cui sono approfonditi i dettagli di ogni singola selezione
  • foglio di statistiche in cui, tramite varie formule, vengono riportate in una tabella alcune medie e statistiche elaborate in base alle informazioni contenute sul foglio di riepilogo.

Il file non l'ho creato io ma mi è stato chiesto di implementare un nuovo foglio in cui sostanzialmente vengono copiate alcune informazioni già presenti da integrare manualmente... e sinceramente non saprei come fare. La mia idea è quella che Excel mi copi automaticamente su un preciso foglio (es. REPORT) ogni Selezione (ovvero riga) che, come status, riporti un determinato valore (nel mio caso "Open") + alcune colonne che seleziono io (su 10 colonne ne voglio solo 4). Oltre a queste colonne poi ne creo una io di volta in volta in cui, manualmente, inserisco delle informazioni sullo stato attuale della selezione.

Riassumendo: l'idea è che ogni volta in cui nel foglio di riepilogo viene inserita una nuova selezione (ovvero riga) che come status riporta un valore ben preciso (ovvero Open), Excel mi ricopia quella riga + determinate colonne che ho indicato io sul foglio REPORT in cui poi io aggiungo altre informazioni.

E' possibile fare tutto questo? Nel caso posso avere indicazioni su come realizzare questa cosa passo per passo?

PS: il file è pieno di dati sensibili e, per questo motivo, non posso allegarlo/inviarlo.

Grazie mille

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
2012-08-01T15:38:20+00:00

Ciao,

prova così:


Private Sub Worksheet_Activate()

    Dim sh As Worksheet

    Dim rng As Range

    Dim lRiga As Long

    Dim lng As Long

    Dim lNew As Long

    Set sh = ThisWorkbook.Worksheets("Riepilogo")

    Set rng = Me.Range("A3").CurrentRegion

    rng.Offset(1, 0).Resize(rng.Rows.Count - 1, rng.Columns.Count).ClearContents

    Set rng = Nothing

    With sh

        lRiga = .Range("G" & .Rows.Count).End(xlUp).Row

        lNew = 4

        For lng = 4 To lRiga

            If UCase(.Range("G" & lng).Value) = "OPEN" Then

                Me.Range("A" & lNew).Value = .Range("A" & lng).Value

                Me.Range("B" & lNew).Value = .Range("B" & lng).Value

                Me.Range("C" & lNew).Value = .Range("C" & lng).Value

                Me.Range("D" & lNew).Value = .Range("D" & lng).Value

                Me.Range("E" & lNew).Value = .Range("F" & lng).Value

                Me.Range("F" & lNew).Value = .Range("G" & lng).Value

                lNew = lNew + 1

            End If

        Next

    End With

    Set sh = Nothing

End Sub


David

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2012-07-31T18:26:00+00:00

Figurati, grazie a te!!!

Se ci riesci mi salvi la vita :D

La vita? Ma ROTFL!

Allora cominciamo....

Prova a copia/incollare questo codice nel modulo di codice del foglio che vai a creare:

Private Sub Worksheet_Activate()

    Dim sh As Worksheet

    Dim lRiga As Long

    Dim lng As Long

    Dim lNew As Long

    Set sh = ThisWorkbook.Worksheets("Riepilogo")

        With sh

            lRiga = .Range("G" & .Rows.Count).End(xlUp).Row

            lNew = 2

            For lng = 4 To lRiga

                If UCase(.Range("G" & lng).Value) = "OPEN" Then

                    Me.Range("A" & lNew).Value = .Range("A" & lng).Value

                    Me.Range("B" & lNew).Value = .Range("B" & lng).Value

                    Me.Range("C" & lNew).Value = .Range("C" & lng).Value

                    Me.Range("D" & lNew).Value = .Range("D" & lng).Value

                    Me.Range("E" & lNew).Value = .Range("F" & lng).Value

                    Me.Range("F" & lNew).Value = .Range("G" & lng).Value

                    lNew = lNew + 1

                End If

            Next

        End With

    Set sh = Nothing

End Sub

NOTE.

Il mio foglio dove vado a copiare i dati si chiama Pippo (originale, eh?).

Nel codice modifica Pippo con il nome del tuo foglio.

Se non hai mai utilizzato il Visual Basic (macro ed affini), vedi qui:

http://www.maurogsc.eu/excel/xlsdoveinserirecodice.aspx

Per il funzionamento: seleziona un foglio qualsiasi e poi seleziona il nuovo foglio.

Siamo (quasi) sempre qui se ti serve aiuto.

Buona serata.

La risposta è stata utile?

0 commenti Nessun commento

17 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-07-31T08:32:07+00:00

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-07-31T08:15:37+00:00

    ...Vorrei allegare un file che ho inventato, ma non so come fare.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-07-31T06:28:12+00:00

    Ciao a tutti,

     

    <cut>

    E' possibile fare tutto questo? Nel caso posso avere indicazioni su come realizzare questa cosa passo per passo?

    PS: il file è pieno di dati sensibili e, per questo motivo, non posso allegarlo/inviarlo.

     

    Grazie mille

    Sì, dovrebbe essere possibile.

    Sintetizziamo il tuo lungo post:

    • quando deve avvenire la copia dei dati nel nuovo foglio?
    • cosa facciamo di quei dati, li accodiamo ai precedenti?
    • quali sono le celle e di quali fogli da riportare nel nuovo foglio?

    Inoltre, credo sia possibile che tu possa creare un file *simile* all'originale, svuotato dei dati sensibili e con dati *inventati*. Questo faciliterebbe chi vuole aiutarti, altrimenti costretto a ricreare il tuo contesto senza conoscerlo.

    Grazie

    La risposta è stata utile?

    0 commenti Nessun commento