Avatar billede jensen363 Forsker
05. oktober 2016 - 11:24 Der er 11 kommentarer og
1 løsning

Markér dubletter

Et regneark bestående af mere end 400.000 rækker skal checkes for dubletter ud fra følgende kriterier :

Kolonne O  =  ID
Kolonne P  =  Date From
Kolonne Q  =  Date To

En ID kan godt optræde flere gange I rækkerne, men der må ikke være datooverlap mellem Date From og Date To.

Hvordan løses den ????
Avatar billede supertekst Ekspert
05. oktober 2016 - 14:58 #1
Hej Jensen363
"En ID kan godt optræde flere gange I rækkerne, men der må ikke være datooverlap mellem Date From og Date To"

Et eksempel ville lette forståelse af problemet :-)
Avatar billede jensen363 Forsker
05. oktober 2016 - 15:05 #2
ID    Date From      Date To
100  01-01-2016    31-12-2016
100  01-01-2017    31-12-2017
100  30-06-2016    31-12-2016

record 1 og 2 er unikke, hvorimod record 3 er en dublet, fordi hele eller dele af samme periode er indeholdt i en anden record
Avatar billede supertekst Ekspert
05. oktober 2016 - 15:14 #3
Ok - men det er vel pr. ID?
Avatar billede jensen363 Forsker
05. oktober 2016 - 15:34 #4
Ja, pr. ID
Avatar billede supertekst Ekspert
05. oktober 2016 - 15:44 #5
Ligger data sorteret efter ID p.t.?
Avatar billede jensen363 Forsker
05. oktober 2016 - 15:53 #6
Ikke som udgangspunkt, men det kan det blive
Avatar billede supertekst Ekspert
05. oktober 2016 - 16:20 #7
Det ville - så vidt jeg kan se - gøre test at det ønskede  noget mere overskueligt.

Du er velkommen til at sende en "mindre" prøve af en sorteret stak - så kunne jeg da prøve at strikke lidt VBA sammen.
Avatar billede jensen363 Forsker
05. oktober 2016 - 16:57 #8
Eksempel sendt
Avatar billede supertekst Ekspert
05. oktober 2016 - 23:16 #9
Modtaget - vender tilbage..
Avatar billede supertekst Ekspert
06. oktober 2016 - 23:26 #10
Rem Version 1 - 06.10.2016
Rem ======================
Dim antalRækker As Long, iD As String, FraDato As Date, tilDato As Date
Dim ræk As Long
Sub kontrolAfDubletter()
    antalRækker = Cells(Rows.Count, "A").End(xlUp).Row
    Application.ScreenUpdating = False
   
    For ræk = 2 To antalRækker - 1
        iD = Right(Range("P" & ræk), 6)
        FraDato = Range("Q" & ræk)
        tilDato = Range("R" & ræk)
       
        check ræk, iD, FraDato, tilDato
    Next ræk
End Sub
Private Sub check(aRæk, aId, aFra, atil)
Dim r As Long
    For r = aRæk + 1 To antalRækker
        If Right(Range("P" & r), 6) = aId Then
            If aFra < Range("Q" & r) And atil < Range("R" & r) Or _
                atil > Range("Q" & r) And atil > Range("R" & r) Then
            Else
                Range("A" & r & ":R" & r).Select
                Selection.Font.Bold = True
            End If
               
        End If
    Next r
End Sub
Avatar billede jensen363 Forsker
07. oktober 2016 - 08:59 #11
Takker for hjælpen
Avatar billede supertekst Ekspert
07. oktober 2016 - 09:24 #12
Selv tak
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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