Avatar billede barentsen Novice
26. august 2008 - 11:49 Der er 3 kommentarer og
1 løsning

VBA - slet rækker med ens indhold

Hej Eksperter

Vil I hjælpe med noget VBA kode - nok en gang...

Jeg har et ark med en masse rækker.
I cellerne i kolonne C kan der både være tal, bogstaver, en blanding + den kan være blank.

Hvis indholdet af en celle i kolonne C forekommer flere gange, så skal alle underlæggende rækker med samme indhold i C slettes, så det kun er den første række med den pågældende observation i C der forbliver i arket.
Er indholdet i C blank, må rækken aldrig slettes. Dvs. der kan forekomme flere celler i C uden indhold.
Antallet af observationer i C kendes ikke, men hvis det skal bruges, kan der tælles i kolonne A, der er der altid indhold i cellerne.

Kolonne C er ikke sorteret. Hvis dette er en forudsætning, så kan jeg selvfølgelig gøre det, men vil gerne undlade at sortere...

Håber ovenstående kan forstås, ellers skriv endelig, så prøver jeg igen.

På forhånd TAK.
Avatar billede sager Nybegynder
26. august 2008 - 12:40 #1
Jeg tager udgangspunkt i at søge i de første 1000 rækker.. Hvis der er flere/færre kan man ændre det. Hvis man ikke ved det kan man starte med lige at tælle antal rækker.

Sub FjernDubletter()
Dim i As Integer
Dim j As Integer

For i = 0 To 1000
    vaerdi = Range("C1").Offset(i, 0)
    If Range("C1").Offset(i, 0) <> "" Then
        For j = i + 1 To 1000
            If Range("C1").Offset(j, 0) = vaerdi Then
                Range("C1").Offset(j, 0).EntireRow.Delete (xlShiftUp)
            End If
        Next j
    End If
Next i

       
End Sub
Avatar billede barentsen Novice
26. august 2008 - 13:21 #2
Hej "sager"
Den gør i princippet det den skal men:

Af en eller anden årsag, så skal den sættes igang flere gange for at fjerne alle "dobbeltgængerne". Den fjerner nogle, men ikke alle - hvis den køres igen fjernes flere. Det eksempel jeg lige har testet på, skulle den køres på 3 gange.

Hvordan får man programmet til at tælle antal rækker?
Avatar billede sager Nybegynder
26. august 2008 - 13:33 #3
argh.. Havde glemt noget...

Sub FjernDubletter()
Dim i As Integer
Dim j As Integer

For i = 0 To 1000
    vaerdi = Range("C1").Offset(i, 0)
    If Range("C1").Offset(i, 0) <> "" Then
        For j = i + 1 To 1000
            If Range("C1").Offset(j, 0) = vaerdi Then
                Range("C1").Offset(j, 0).EntireRow.Delete (xlShiftUp)
                j = j - 1
            End If
        Next j
    End If
Next i

End Sub

Det med at tælle rækker kunne f.eks. gøres ved at se i A kolonnen, hvis der altid står noget.(Og den er tom når man er nået til slutningen af listen). Så kan man tælle ved at bruge:
raekker = Range(Range("C1"), Range("C1").End(xlDown)).Rows.Count

- eller bare spørg om der står noget i cellen Range("A1").Offset(i, 0) og så eller stoppe når den er tom.
Avatar billede barentsen Novice
27. august 2008 - 09:05 #4
Tak for hjælpen.
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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