Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Non copiare righe duplicate, ed aggiornare solo alcuni valori

  1. #1
    L'avatar di Codice_da_Vinci
    Codice_da_Vinci non  in linea Scolaretto
    Avrei bisogno di non copiare righe duplicate, e di cambiare solo il contenuto di alcune colonne in base a delle condizioni. Il tutto implementando il codice che gi utilizzo.

    Ho questo codice con il quale copio delle righe ed il valore di alcune colonne in base ad una condizione.
    (If Sheets("Europa").Cells(r, 1) <> "" Then)

    Sub CommandButton1_Click()
    ' Copia A3:F3  Descrizione
        For r = 3 To 14
        For c = 1 To 6
      If Sheets("Europa").Cells(r, 1) <> "" Then
            Foglio1.Cells(Rows.Count, c + 1).End(xlUp).Offset(1, 0).Value = Foglio125.Cells(r, c)
    End If
        Next c
        Next r
    
    ' Copia J3:N3  1 Sezione
    For r = 3 To 14
        For c = 8 To 14
        If Sheets("Europa").Cells(r, 1) <> "" Then
            Foglio1.Cells(Rows.Count, c - 2).End(xlUp).Offset(1, 0).Value = Foglio125.Cells(r, c)
        End If
        Next c
        Next r
        ' Copia P3:T3  2 Sezione
    For r = 3 To 14
        For c = 16 To 20
        If Sheets("Europa").Cells(r, 1) <> "" Then
            Foglio1.Cells(Rows.Count, c - 2).End(xlUp).Offset(1, 0).Value = Foglio125.Cells(r, c)
        End If
        Next c
        Next r
        ' Copia V3:Z3  3 Sezione
    For r = 3 To 14
        For c = 22 To 26
        If Sheets("Europa").Cells(r, 1) <> "" Then
            Foglio1.Cells(Rows.Count, c + 25).End(xlUp).Offset(1, 0).Value = Foglio125.Cells(r, c)
        End If
        Next c
        Next r
        ' Copia AB3:AF3  4 Sezione
    For r = 3 To 14
        For c = 28 To 32
        If Sheets("Europa").Cells(r, 1) <> "" Then
            Foglio1.Cells(Rows.Count, c + 25).End(xlUp).Offset(1, 0).Value = Foglio125.Cells(r, c)
        End If
        Next c
        Next r
        ' Copia AK3:AM3  5 Sezione
    For r = 3 To 14
        For c = 37 To 39
        If Sheets("Europa").Cells(r, 1) <> "" Then
            Foglio1.Cells(Rows.Count, c + 126).End(xlUp).Offset(1, 0).Value = Foglio125.Cells(r, c)
        End If
        Next c
        Next r
        
    End Sub
    
    Ho bisogno di implementarlo aggiungendo 2 caratteristiche:
    a) Che non vengano copiate righe duplicate da riconoscere in questa porzione di codice
    Laddove il testo della colonna 4 + il testo della colonna 6 (For 1 To 6) del Foglio125 (origine) siano uguali nel Foglio1 (destinazione)

    ' Copia A3:F3  Descrizione
        For r = 3 To 14
        For c = 1 To 6
      If Sheets("Europa").Cells(r, 1) <> "" Then
            Foglio1.Cells(Rows.Count, c + 1).End(xlUp).Offset(1, 0).Value = Foglio125.Cells(r, c)
    End If
        Next c
        Next r
    
    b) La seconda caratteristica risiede in questa porzione di codice
        ' Copia AK3:AM3  5 Sezione
    For r = 3 To 14
        For c = 37 To 39
        If Sheets("Europa").Cells(r, 1) <> "" Then
            Foglio1.Cells(Rows.Count, c + 126).End(xlUp).Offset(1, 0).Value = Foglio125.Cells(r, c)
        End If
        Next c
        Next r
    
    Copiare soltanto I valori della colonna 37, 38 e 39 (For C = 37 To 39) del Foglio125 (origine) al Foglio 1 (destinazione) in delle nuove colonne. E mantenere invariati i valori precedentemente copiati (sempre in riferimento alle stesse colonne) in Foglio1.Cells(Rows.Count, c + 126) . Specifico che sono dati prelevati attraverso una query web per cui ad ogni aggiornamento cambiano, e vorrei appunto avere la possibilit di mantenere invariati i valori della primo aggiornamento effettuato.

  2. #2
    L'avatar di dodo47
    dodo47 non  in linea Topo di biblioteca
    Ciao
    non commento, ma veniamo alle tue richieste:
    a)..."Laddove il testo della colonna 4 + il testo della colonna 6 (For 1 To 6) del Foglio125 (origine) siano uguali nel Foglio1 (destinazione)..."
    uguali a quale riga del foglio1, visto che tu nel foglio1 accodi i dati sulla prima riga vuota - Foglio1.Cells(Rows.Count, c + 1).End(xlUp).Offset(1, 0) - che quindi vuota?
    Inoltre parli di "testo" quindi dovrai usare & per unire le due celle e confrontarle.

    b) ci ho capito poco, comunque se lo scopo incrementare 126..127 ecc, inizializzi una variabile es: c1=126, poi farai: Foglio1.Cells(Rows.Count, c + c1)....e poi incrementi c1=c1+1

    saluti

  3. #3
    L'avatar di Codice_da_Vinci
    Codice_da_Vinci non  in linea Scolaretto
    Ciao dodo
    Si in effetti copio le righe sulla prima riga libera del foglio1,
    non possibile fare questo confronto dal foglio125 al foglio1 e se trova i valori i valori corrispondenti (colonna 4 + 6) non copiarli?

  4. #4
    L'avatar di dodo47
    dodo47 non  in linea Topo di biblioteca
    Quote Originariamente inviato da Codice_da_Vinci Visualizza il messaggio
    Ciao dodo
    Si in effetti copio le righe sulla prima riga libera del foglio1,
    non possibile fare questo confronto dal foglio125 al foglio1 e se trova i valori i valori corrispondenti (colonna 4 + 6) non copiarli?
    ma in quali righe del foglio1 ci sono i valori da confrontare? in tutte le col 4+6 fin l scritte??

  5. #5
    L'avatar di Codice_da_Vinci
    Codice_da_Vinci non  in linea Scolaretto
    Si dodo, il confronto va fatto su tutte le righe del foglio1 con le colonne 4 e 6 scritte

  6. #6
    L'avatar di dodo47
    dodo47 non  in linea Topo di biblioteca
    Ciao
    c' qualcosa che non mi torna:

    sul foglio1 copi a partire da colonna 2 (c+1), mentre sul foglio125 i valori partono da col 1.

    non che devi confrontare col 4+6 di foglio125 con col. 5+7 di foglio1??

    Inoltre: nel foglio1 da B1 a G1 hai intestazioni??
    Ultima modifica di dodo47; 25-06-2013 12:39 

  7. #7
    L'avatar di Codice_da_Vinci
    Codice_da_Vinci non  in linea Scolaretto
    Si hai ragione foglio125 4 e 6 Foglio1 5 e 7 Inoltre nel folgio 1 le intestazioni ci sono sono in b1 a g1 (arrivano fino a fp)

  8. #8
    L'avatar di dodo47
    dodo47 non  in linea Topo di biblioteca
    Farei cos:
    ...
    Dim trovato As Boolean
    trovato = False
    For r = 3 To 14
        For c = 1 To 6
            If Sheets("Europa").Cells(r, 1) <> "" Then
                mVal = Foglio125.Cells(r, 4) & Foglio125.Cells(r, 6)
                r1 = Range("B" & Rows.Count).End(xlUp).Row + 1
                For i = 2 To r1
                    If Foglio1.Cells(i, 5) & Foglio1.Cells(i, 7) = mVal Then trovato = True
                Next i
                If trovato = True Then Exit For
                Foglio1.Cells(Rows.Count, c + 1).End(xlUp).Offset(1, 0).Value = Foglio125.Cells(r, c)
            End If
        Next c
        trovato = False
    Next r
    ...
    
    saluti

  9. #9
    L'avatar di Codice_da_Vinci
    Codice_da_Vinci non  in linea Scolaretto
    Ciao Dodo
    non funziona continua a copiare anche le righe gi presenti
    Mi spieghi che fa questo codice?
    r1 = Range("B" & Rows.Count).End(xlUp).Row + 1
                For i = 2 To r1
    

  10. #10
    L'avatar di dodo47
    dodo47 non  in linea Topo di biblioteca
    Ciao
    r1 corrisponde all'ultima riga del foglio1 dove cercare se i valori esistono o no.
    il ciclo quindi cerca da riga 2 foglio1 a riga r1 foglio1 colonne 5 e 7.

    il codice funziona in base a quanto tu hai chiesto e, ovviamente va eseguito dal foglio1

    Nell'allegato il pulsante legato alla macro CopiaMia (in quanto uso il foglio2 e non 125).
    C' la macro Copia che usa il foglio125 che io non ho.

    saluti

    Cdvinci.zip

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Report stampare solo alcuni valori
    Da FabioFire nel forum Microsoft Access
    Risposte: 6
    Ultimo Post: 25-11-2015, 15:41
  2. Visualizzare solo alcuni valori su casella combinata
    Da druido83 nel forum Microsoft Access
    Risposte: 5
    Ultimo Post: 26-09-2014, 20:03
  3. copiare su nuovo foglio solo alcune righe
    Da pietroexcel nel forum Microsoft Excel
    Risposte: 10
    Ultimo Post: 20-06-2013, 14:44
  4. Access- Abilitare utenti ad aggiornare solo alcuni dati
    Da max-paso nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 20-12-2006, 15:00
  5. Copiare solo i valori superiori a 0
    Da jacknice nel forum Microsoft Word
    Risposte: 1
    Ultimo Post: 09-12-2005, 09:39