Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Elimina Duplicati con colonna di confronto

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Elimina Duplicati con colonna di confronto

Postdi Omocaig » 27/08/15 14:00

Ciao, avrei bisogno di aiuto per completare la seguente macro:

La macro confronta il range B14:B20 del foglio Totale con il range variabile B del foglio Runimpo, non riesco a far si che la macro confronti le due colonne considerando entrambi i range variabili

A seguire il codice e il file allegato

http://www.filedropper.com/prova5

Codice: Seleziona tutto
Sub Elimina_Duplicati()
Dim iListCount As Integer
Dim iCtr As Integer
Application.ScreenUpdating = False

iListCount = Sheets("Runimpo").Cells(Rows.Count, "B").End(xlUp).Row

'fa il loop nel foglio totale e lo compara con la colonna B del foglio Runimpo
'For Each x In Sheets("Totale").Range("B14").End(xlUp)<--- Non funziona
 For Each x In Sheets("Totale").Range("B14:B20") '<---Funziona
   For iCtr = 13 To iListCount
      If x.Value = Sheets("Runimpo").Range("B" & iCtr).Value Then
         Sheets("Runimpo").Range("B" & iCtr).EntireRow.Delete (xlShiftUp)

         iCtr = iCtr + 1
      End If
   Next iCtr
Next
End Sub


Vi ringrazio molto !
Xp + Office 2003 Ita
Omocaig
Utente Junior
 
Post: 76
Iscritto il: 11/05/15 15:08

Sponsor
 

Re: Elimina Duplicati con colonna di confronto

Postdi wallace&gromit » 27/08/15 16:30

ci sono due errori di compilazione nella formulazione "Sheets("Totale").Range("B14").End(xlUp)":
- questa fa riferimento ad una sola cella
- la cella a cui fa riferimento è B13, perché da B14 va in su!

seguendo la sintassi che hai adottato per il foglio Runimpo puoi determinare in una variabile anche l'ultima riga del foglio totale e poi usarla per determinare il range:
Codice: Seleziona tutto
Sub Elimina_Duplicati()
Dim iListCount, jListCount As Integer
Dim iCtr As Integer
Application.ScreenUpdating = False

iListCount = Sheets("Runimpo").Cells(Rows.Count, "B").End(xlUp).Row
jListCount = Sheets("Totale").Cells(Rows.Count, "B").End(xlUp).Row

'fa il loop nel foglio totale e lo compara con la colonna B del foglio Runimpo
For Each x In Sheets("Totale").Range("B14:B" & jListCount)
   For iCtr = 13 To iListCount
      If x.Value = Sheets("Runimpo").Range("B" & iCtr).Value Then
         Sheets("Runimpo").Range("B" & iCtr).EntireRow.Delete (xlShiftUp)
         iCtr = iCtr + 1
      End If
   Next iCtr
Next
End Sub
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1421
Iscritto il: 16/01/12 14:21

Re: Elimina Duplicati con colonna di confronto

Postdi Anthony47 » 28/08/15 00:26

Penso che invece di iCtr = iCtr + 1 dovrebbe essere iCtr = iCtr - 1

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Elimina Duplicati con colonna di confronto

Postdi Omocaig » 01/09/15 10:17

Grazie mille, funziona ! Mi spiegheresti meglio come mai hai usato "B14:B" nella stringa
Codice: Seleziona tutto
Sheets("Totale").Range("B14:B" & jListCount)
?

Grazie ancora !
Xp + Office 2003 Ita
Omocaig
Utente Junior
 
Post: 76
Iscritto il: 11/05/15 15:08

Re: Elimina Duplicati con colonna di confronto

Postdi wallace&gromit » 01/09/15 10:41

rispetto all'altro topic ([url]viewtopic.php?f=26&t=105316[/url]) in questo caso ho usato sempre il sistema di riferimento assoluto.
All'inizio della macro verifico qual'è l'ultima riga sui due fogli.
Poi, mentre "iListCount" varia di volta in volta, perché la lista si accorcia, jListCount rimane fisso e mi descrive il numero di riga dell'ultimo elemento.
Sapendo che il range parte da B14 e avendo calcolato l'ultima riga (mettiamo che sia per esempio la riga 20) scrivendo la variabile Range("B14:B" & jListCount) ottengo il Range("B14:B20")
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1421
Iscritto il: 16/01/12 14:21

Re: Elimina Duplicati con colonna di confronto

Postdi Omocaig » 01/09/15 11:09

Sei un grande ! Divento matto dietro a ste cose ! Grazie mille, veramente !
Xp + Office 2003 Ita
Omocaig
Utente Junior
 
Post: 76
Iscritto il: 11/05/15 15:08


Torna a Applicazioni Office Windows


Topic correlati a "Elimina Duplicati con colonna di confronto":


Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti