Avatar billede Nichlas Mester
25. november 2019 - 14:30 Der er 7 kommentarer og
2 løsninger

Fjern Dubletter VBA style

Hej Eksperten,

Jeg har et regneark hvor jeg i ark 1 har en masse navne.

Disse navne ændre sig mange gange dagligt, og det jeg indtil nu har gjort for at finde dublet værdierne er at navngive det område de kan stå i, og kopiere/fjerne dubletter ved at kopiere det ind i et tomt ark.

Dette er dog super langsommeligt så jeg har nu lavet en macro knap, men den virker ikke...

Har forsøgt mig med mange forskellige VBA sætninger, men i bund og grund fatter jeg hat af hvad jeg skriver så når den kommer med fejl 400 aner jeg ikke hvad der er galt.

det makroen skal kunne er følgende

Tage alt den data der står i ark1 b2:b100000, kopiere det ind i et ark som hedder hedder data i felt k2, markere hele molivitten (k2:k1000000) og fjerne dubletter.

Kan dette lade sig gøre og hvordan?
Avatar billede finb Ekspert
25. november 2019 - 14:39 #1
""Fjerne dublerede værdier
Når du bruger funktionen Fjern dubletter, slettes de dublerede data permanent. Før du sletter dubletterne, er det en god ide at kopiere de oprindelige data til et andet regneark, så du ikke ved et uheld mister oplysninger.

1.Markér det celleområde, der indeholder de dublerede værdier, du vil fjerne.

Tip!: Fjern eventuelle dispositioner eller subtotaler fra dine data, før du forsøger at fjerne dubletter.

2.Klik på Data > Fjern dubletter, og markér eller fjern derefter markeringen af de kolonner, du vil fjerne dubletterne fra, under Kolonner.

3.Klik på OK.""
Avatar billede Nichlas Mester
25. november 2019 - 14:41 #2
Har du overhoved læst mit problem, eller svare du bare automatisk ud fra hvad du tror problemet er, for intet i din forklaring relatere sig til mit spørgsmål...
Avatar billede finb Ekspert
25. november 2019 - 14:44 #3
Til inspiration:
for each celleA in kildeRange
  for each celleB in destinationRange
    if celleA = celleB then exit for
      else
      if celleB = "" then celleB=celleA
    osv...
Avatar billede Nichlas Mester
25. november 2019 - 14:48 #4
Jeg spørger om hjælp ikke om inspiration, jeg har endda inkluderet at jeg faktisk ikke forstå VBA, så det er direkte et råb om hjælp ikke inspiration, så hvis du har tænkt dig ikke at forholde dig til topic, så venligst undlad at kommentere.

Du må meget gerne komme med løsningsforslag, har dette ikke interesse så hav en god dag, jeg er sikker på andre folk bliver glade for din inspiration.
Avatar billede store-morten Ekspert
25. november 2019 - 19:51 #5
Prøv:

    Range("Med_dubletter").Copy _
    Destination:=Range("Uden_Dubletter")
    Application.CutCopyMode = False
    Range("Uden_Dubletter").RemoveDuplicates _
    Columns:=1, Header:=xlNo
Avatar billede Jan Hansen Ekspert
26. november 2019 - 00:51 #6
tror denne macro løser dit problem

Option Explicit
Dim Ws As Worksheet
Dim Area As Range
Dim Arr As Variant, Arr2() As Variant
Dim MyCol As New Collection
Dim iRow As Long


Const Ark1 As String = "Ark1" ' Navn på arket med rådata
Const Ark2 As String = "Data" ' Navn på mål arket
Const Område_1 As String = "B2:B100000" ' område på rådata arket
Const Område_2 As String = "K2" ' Første celle på mål arket

Sub KopiUdenDublet()
    Application.ScreenUpdating = False
    Set Ws = Sheets(Ark1)
    Set Area = Ws.Range(Område_1)
    Arr = Area
    On Error Resume Next
    For iRow = LBound(Arr, 1) To UBound(Arr, 1)
        If Arr(iRow) <> "" Then
            MyCol.Add Arr(iRow, 1), Arr(iRow, 1)
        End If
    Next
    On Error GoTo 0
    Erase Arr
    Set Ws = Sheets(Ark2)
    Set Area = Ws.Range(Område_2)
    Range(Area, Area.Offset(99999, 0)).ClearContents
    With MyCol
        ReDim Arr2(1 To .Count)
        For iRow = 1 To .Count
            Area.Offset(iRow - 1, 0) = .Item(iRow)
        Next
    End With
    Application.ScreenUpdating = True
End Sub
Avatar billede store-morten Ekspert
26. november 2019 - 08:02 #7
Sheets("Ark1").Range("B2:B100000").Copy _
    Destination:=Sheets("Data").Range("K2")
    Application.CutCopyMode = False
    Sheets("Data").Range("K2:K100000").RemoveDuplicates _
    Columns:=1, Header:=xlNo
Avatar billede store-morten Ekspert
28. november 2019 - 07:48 #8
Hej Nichlas

For at #5 kan bruges, skal den ligge i et Modul og
B2:B100000 skal være navn-givet: Med_dubletter
K2:K1000000 skal være navn-givet: Uden_Dubletter
Avatar billede Nichlas Mester
29. november 2019 - 08:06 #9
Hej Jan og Morten,

Tak for jeres hjælp, jeg endte med at bruge din løsning Morten, da det var den jeg nemmest kunne gennemskue, jeg er ret imponeret over kompleksiteten af dine makroer Jan, mit problem er bare at jeg ikke forstår dem, så det er enormt svært at troubleshoote når de ikke virker i første omgang, men tusinde mange tak for jeres hjælp!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester