15. april 2005 - 21:02Der er
7 kommentarer og 1 løsning
Slet dubletter igen
Hej
Jeg har et ark hvor der er en del dubletter, men jeg bliver nødt til at sikre mig at alle kolonner fra A til I er ens inden jeg sletter, alle data er sorteret så dubletterne står lige under hinanden, jeg har fundet denne makro her inde den er lavet af kabbak og er i mine øjne genial :-)
Kan den rettes til så den kan løse min opgave?
den første makerer dubletter røde
Public Sub MakerDubletterRøde() col = ActiveCell.Column Rowcount = Cells(65536, col).End(xlUp).Row Range(Cells(1, col), Cells(65536, col).End(xlUp)).Select For I = 1 To Rowcount If Cells(I, col).Interior.ColorIndex <> 3 Or Cells(I, col) <> "" Then For I1 = I + 1 To Rowcount If Cells(I, col) = Cells(I1, col) Then Cells(I1, col).Interior.ColorIndex = 3 End If Next End If Next End Sub
denne køres efter at du har tjekket om det er ok, så slettes de. Public Sub FjernDubletterRøde() col = ActiveCell.Column Rowcount = Cells(65536, col).End(xlUp).Row Range(Cells(1, col), Cells(65536, col).End(xlUp)).Select For I = 1 To Rowcount If Cells(I, col).Interior.ColorIndex = 3 Then Cells(I, col).EntireRow.Delete Shift:=xlUp I = I - 1 Rowcount = Rowcount - 1 End If Next End Sub
Det kan den sikkert, men kan du ikke uddybe hvad opgaven er ? Jeg har lidt problemer med at forstå hvad du ønsker at gøre før du chekker for dubletter.
Jo, nu skal jeg prøve, det som jeg mente var at celle indholdet i A,B,C,D,E,F,G,H og I skal sammenlignes med celler i rækken under. Hvis celle indholdet i række under hinanden er ens fra A til I.
celler i kolonne A indholder tal B også Tal C = tekst, tal og tekst D
Jo, nu skal jeg prøve, det som jeg mente var at celle indholdet i A,B,C,D,E,F,G,H og I skal sammenlignes med celler i rækken under. Hvis celle indholdet i række under hinanden er ens fra A til I skal denne laves rød.
celler i kolonne A indholder tal B også Tal C = tekst, tal og tekst D = tal indholdende Bogstaver E = tekst F = tekst G = tal H = klokkeslet I = klokkeslet
Så har jeg et forslag der bygger på avanceret filter. Jeg nøjes med at farve celler i kolonne A, men der chekkes på A:H
Sub FarvCeller() Dim rCell As Range Dim lLastRow As Long Application.ScreenUpdating = False lLastRow = Range("A65536").End(xlUp).Row Range("A1:H" & lLastRow).AdvancedFilter Action:=xlFilterInPlace, Unique:=True For Each rCell In Range("A1:A" & lLastRow) If rCell.EntireRow.Hidden = True Then rCell.Interior.Color = vbRed Next ActiveSheet.ShowAllData Application.ScreenUpdating = True End Sub
Sub FarvCeller() Dim rCell As Range Dim lLastRow As Long 'slå skærmopdatering fra pga. speed Application.ScreenUpdating = False
'find sidste række i kolonne A lLastRow = Range("A65536").End(xlUp).Row
'sæt avanceret filter på dataområdet, således at kun 'unikke poster er vist. dvs dubletter er så gemt. Range("A1:H" & lLastRow).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
'gå alle rækker i kolonne A igennen og se om rækken er gemt 'hvis den er gemt er det fordi det er en dublet og så skal den farves For Each rCell In Range("A1:A" & lLastRow) If rCell.EntireRow.Hidden = True Then rCell.Interior.Color = vbRed Next 'Fjern filteret igen og vis alle data ActiveSheet.ShowAllData 'slå skærmopdatering til igen Application.ScreenUpdating = True End Sub
Kan man ændre koden, så man fx kun ser på kolonne A, B, D, E (dvs. ser bort fra hvad der står i fx kolonne C)?
Står nemlig med et case, hvor der kun er nogle kolonner som skal tjekkes for dubletter.
På forhånd tak.
Mvh. Anders
Synes godt om
Ny brugerNybegynder
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.