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