Macro Copia righe foglio 1 su foglio 2 se cella A foglio 1 soddisfa certe condizioni

Buongiorno a tutti,

è la prima volta che chiedo aiuto attraverso tale mezzo e spero di ricevere indicazioni preziose.

ho un foglio di lavoro che contiene una tabella, è composto dalle colonne da A a Y e da circa 5000 righe.

vorrei trovare una macro che mi permetta, all'inserimento di uno specificato dato (in questo caso la parola "SI"), di copiare le righe corrispondenti con l'intero contenuto sul foglio 2.

ho trovato ed applicato la seguente macro:

Sub m()

Dim sh1 As Worksheet

Dim sh2 As Worksheet

Dim Ing As Long

Dim IRiga As Long

Dim ILastRow As Long

 

With ThisWorkbook

Set sh1 = .Worksheets("LAB")

Set sh2 = .Worksheets("ARCHIVIO")

End With

 

With sh1

ILastRow = .Range("A" & .Rows.Count).End(xlUp).Row

IRiga = sh2.Range("A" & .Rows.Count).End(xlUp).Row + 1

For Ing = 2 To ILastRow

.Range("I" & Ing).Value = "1" Then

.Range("A" & Ing & ":K" & Ing).Copy

sh2.Range("A" & IRiga).PasteSpecial

IRiga = IRiga + 1

End If

Next

End With

 

Application.CutCopyMode = False

 

Set sh2 = Nothing

 Set sh1 = Nothing

 

End Sub

 

la macro funziona, purtroppo però ogni volta che la lancio questa mi copia le righe già copiate che vanno ad aggiungersi a quelle copiate in precedenza.

cosa posso fare?

eventualmente esiste anche la possibilità di avere una macro che taglia e incolla sempre le riche con caratteristiche uguali a quelle indicate?

grazie


 

Informazioni domanda


Ultimo aggiornamento dicembre 15, 2018 Visualizzazioni 10.933 Si applica a:

* Prova con un numero di pagina inferiore.

* Immetti solo numeri.

* Prova con un numero di pagina inferiore.

* Immetti solo numeri.

<cut>


Soluzione 1:

  • Registra una macro.
  • Filtra la tabella con i dati da copiare per la colonna con il Sì.
  • Copia i dati filtrati.
  • Incollali nel nuovo foglio.

Soluzione 2, qui:

Nell'esempio vengono copiate in Foglio2 tutte le righe che in Foglio1 hanno Sì in colonna Z.

---

NOTA. Ho eliminato il post con la stessa domanda che avevi inserito in coda ad un vecchio thread.

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.

Grazie mille!!!

proverò durante il week End.

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.

grazie Mauro,

proprio quello che cercavo.

ti faccio altra domanda:

una macro che sposta le righe in cui le celle di una colonna hanno un determinato valore o testo?

grazie ancora

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.

ti faccio altra domanda:

una macro che sposta le righe in cui le celle di una colonna hanno un determinato valore o testo?

grazie ancora

Puoi spiegare meglio, per favore.

Grazie.

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.

ciao,

la stessa macro che mi hai girato nella soluzione 2 ma che invece di copiare, spostano definitivamente le righe che in foglio 1 hanno la condizione SI nella colonna Z.

grazie

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.

ciao,

la stessa macro che mi hai girato nella soluzione 2 ma che invece di copiare, spostano definitivamente le righe che in foglio 1 hanno la condizione SI nella colonna Z.

grazie

Sostituisci il codice precedente con questo:

Public Sub mTagliaCopia()

    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    Dim lRiga1 As Long
    Dim lRiga2 As Long
    Dim lng As Long
   
    With ThisWorkbook
        Set sh1 = .Worksheets("Foglio1")
        Set sh2 = .Worksheets("Foglio2")
    End With
   
    Application.ScreenUpdating = False

    With sh1
        lRiga1 = sh1.Range("A" & sh2.Rows.Count).End(xlUp).Row + 1
        For lng = lRiga1 To 2 Step -1
            If .Range("Z" & lng).Value = "SI" Then
                .Range("A" & lng & ":Z" & lng).Copy
                lRiga2 = sh2.Range("A" & .Rows.Count).End(xlUp).Row + 1
                sh2.Range("A" & lRiga2).PasteSpecial
                Application.CutCopyMode = False
                .Rows(lng & ":" & lng).Delete
            End If
        Next

    End With
   
    Application.ScreenUpdating = True
   
    Set sh1 = Nothing
    Set sh2 = Nothing
   
End Sub

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.

Grazie Mauro,

ho provato ma ho alcuni problemi.

premetto: il foglio di lavoro è "dinamico", è un foglio in cui inseriamo gli ordini man mano che arrivano e viene applicata la condizione NO nella cella corrispondente della colonna Z, una volta evasi si applica la condizione SI nella stessa cella. l'evasione degli ordini non avviene in sequenza di inserimento, ma in base alle esigenze di produzione, quindi potrebbe essere che alcune righe Hanno SI, altre hanno NO e così via. Ho fatto alcune prove ma questo è il risultato:

  1. le righe che soddisfano la condizione vengono effettivamente copiate e spostate, ma, una volta modificata la condizione del foglio 1 di altre righe le prime vengono sovrascritte.
  2. avrei necessità di applicare la macro da un certo numero di riga in poi, lasciando le prime 8 come intestazione.

se ti serve potrei inviarti la cartella.

Grazie

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.

se ti serve potrei inviarti la cartella.

maurogsc

chiocciola

alice.it

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.

Inviata.

Grazie

La risposta è risultata utile a 1 persona

·

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.

Ciao,

ti è arrivata la mail???

grazie

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.

* Prova con un numero di pagina inferiore.

* Immetti solo numeri.

* Prova con un numero di pagina inferiore.

* Immetti solo numeri.