Avatar billede petzel Novice
02. august 2012 - 08:01 Der er 6 kommentarer

Makro: Reducering af ens rækker

Jeg har behov for lidt macro hjælp:

Jeg har et excel dokument som indeholder en adresse liste.
Hver række er opbygget sådan:
Celle D: navn & efternavn
Celle E: Adresse

Adresse listen er en sammen fatning af 3 lister. Samme navn mv. kan der for optræde flere gange på den endelige liste.
Når listen er sammenfattet indeholder den mellem 1000 og 12000 rækker adresse med oplysninger.

Ønske:
Hvis der er genganger skal disse reduceres således at den endelige liste ikke indeholder flere rækker med sammen oplysninger.

Håber at ovenstående giver mening.
Avatar billede supertekst Ekspert
02. august 2012 - 09:00 #1
Har du mulighed for at sende filen eller uddrag heraf?

Er det entydigt nok at sammenligne ens navne?
Avatar billede supertekst Ekspert
02. august 2012 - 10:50 #2
VBA-kode indsættes under relevante ark /
Overskrifter forventes i række 1 *)
Sorter iflg. kolonne D / E forinden

Public Sub sletDobbeltgængere()
Dim sidsterække As Long, ræk As Long
Dim navn As String, adresse As String
Dim Xnavn As String, Xadresse As String
    sidsterække = ActiveCell.SpecialCells(xlLastCell).Row
       
    Application.ScreenUpdating = False
   
Rem traverser rækker
    For ræk = 2 To sidsterække    'evt. ret til 1 *
        If ræk = 2 Then
            Xnavn = Range("D2")
            Xadresse = Range("E2")
        Else
            navn = Range("D" & ræk)
            adresse = Range("E" & ræk)
Rem hvis blanke - så stop
            If navn = "" And adresse = "" Then
                Exit For
            Else
Rem sammenlign - slet række hvis navn & adresse er ens
                If navn = Xnavn And adresse = Xadresse Then
                    Rows(ræk).Delete
                    ræk = ræk - 1
                Else
                    Xnavn = Range("D" & ræk)
                    Xadresse = Range("E" & ræk)
                End If
            End If
        End If
    Next ræk
End Sub
Avatar billede Thorp Praktikant
02. august 2012 - 11:02 #3
Du kunne også anvende Excels indbyggede funktionalitet:

ActiveSheet.Range("$A$1:$B$999").RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
Avatar billede supertekst Ekspert
02. august 2012 - 11:14 #4
Ja - det er jo meget nemmere og det virker - kendte ikke denne funktion..
Avatar billede petzel Novice
02. august 2012 - 11:49 #5
Til Thorp:
Hvor/hvordan skal den indtastes ??
Avatar billede Thorp Praktikant
02. august 2012 - 12:11 #6
Indsæt nedenstående under dit ark. Du kalder så denne procedurer når du vil bruge den. Du kan også flytte den til et modul og skippe Private foran procedurenavnet.

Private Sub Remove_Dublicates()

Dim MyRange As Variant


ActiveSheet.Range("$D$1").Select
MyRange = Selection.CurrentRegion.Address

ActiveSheet.Range(MyRange).RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes

End Sub
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