26. august 2008 - 11:49Der 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.
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
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?
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.
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.