Slik bruker du makroeksempler til å slette dupliserte elementer i en liste i Excel
Mer informasjon
Microsoft gir programmeringseksempler kun for illustrasjon, uten garanti hverken uttrykt eller antydet. Dette inkluderer, men er ikke begrenset til, de underforståtte garantiene for salgbarhet eller egnethet for et bestemt formål. Denne artikkelen forutsetter at du er kjent med programmeringsspråket som blir demonstrert og verktøyene som brukes til å opprette og feilsøke prosedyrer. Microsoft kundestøtte-teknikere kan hjelpe til å forklare funksjonaliteten til en bestemt prosedyre, men de vil ikke endre disse eksemplene for å gi ekstra funksjonalitet eller konstruere prosedyrer for å dekke dine spesifikke behov.
Eksempel 1: Slette dupliserte elementer i én enkelt liste
Følgende eksempelmakro søker i én enkelt liste i området A1:A100 og sletter alle dupliserte elementer i listen. Denne makroen krever at du ikke har tomme celler i listeområdet. Hvis listen inneholder tomme celler, kan du sortere dataene i stigende rekkefølge slik at alle de tomme cellene er på slutten av listen.
Sub DelDups_OneList()
Dim iListCount As Integer
Dim iCtr As Integer
' Turn off screen updating to speed up macro.
Application.ScreenUpdating = False
' Get count of records to search through.
iListCount = Sheets("Sheet1").Range("A1:A100").Rows.Count
Sheets("Sheet1").Range("A1").Select
' Loop until end of records.
Do Until ActiveCell = ""
' Loop through records.
For iCtr = 1 To iListCount
' Don't compare against yourself.
' To specify a different column, change 1 to the column number.
If ActiveCell.Row <> Sheets("Sheet1").Cells(iCtr, 1).Row Then
' Do comparison of next record.
If ActiveCell.Value = Sheets("Sheet1").Cells(iCtr, 1).Value Then
' If match is true then delete row.
Sheets("Sheet1").Cells(iCtr, 1).Delete xlShiftUp
' Increment counter to account for deleted row.
iCtr = iCtr + 1
End If
End If
Next iCtr
' Go to next record.
ActiveCell.Offset(1, 0).Select
Loop
Application.ScreenUpdating = True
MsgBox "Done!"
End Sub
Eksempel 2: Sammenligne to lister og slette dupliserte elementer
Følgende eksempelmakro sammenligner én (hovedliste) med en annen liste, og sletter dupliserte elementer i den andre listen som også finnes i hovedlisten. Den første listen er på Ark1 i området A1:A10. Den andre listen er på Ark2 i området A1:A100. Hvis du vil bruke makroen, merker du et av arket og kjører deretter makroen.
Sub DelDups_TwoLists()
Dim iListCount As Integer
Dim iCtr As Integer
' Turn off screen updating to speed up macro.
Application.ScreenUpdating = False
' Get count of records to search through (list that will be deleted).
iListCount = Sheets("sheet2").Range("A1:A100").Rows.Count
' Loop through the "master" list.
For Each x In Sheets("Sheet1").Range("A1:A10")
' Loop through all records in the second list.
For iCtr = 1 To iListCount
' Do comparison of next record.
' To specify a different column, change 1 to the column number.
If x.Value = Sheets("Sheet2").Cells(iCtr, 1).Value Then
' If match is true then delete row.
Sheets("Sheet2").Cells(iCtr, 1).Delete xlShiftUp
' Increment counter to account for deleted row.
iCtr = iCtr + 1
End If
Next iCtr
Next
Application.ScreenUpdating = True
MsgBox "Done!"
End Sub