Avatar billede barentsen Novice
16. januar 2008 - 10:07 Der er 5 kommentarer og
1 løsning

Sortering af data

Hej eksperter.

Hvem kan hjælpe med at få splittet mit ark op som ønsket:

Jeg har et ark bestående af 5 kolonner (A-E) og 4.626 rækker.
Række 1 bruges til kolonneoverskrifter.

Arket er pt. sorteret nummerisk efter kolonne B, som er kundenr.

Jeg er interesseret i at få arket splittet op, så de kundenr. der kun fremtræder 1 gang på listen, kommer på en liste for sig, og de kundenr. der fremtræder 2 eller flere gange står på en anden liste.

Dataene fra Kolonne A, C, D og E skal selvfølgelig med på de nye lister. - Hvis et kundenr. fremtræder flere gange, er oplysningerne i de øvrige kolonner muligvis forskellige, men 2 helt identiske rækker kan forekomme.

PFT.
Avatar billede jlemming Nybegynder
16. januar 2008 - 11:46 #1
Den nye liste skal det være på samme ark, eller et nyt ark.

Jeg går udfra det gerne må være vba kode
Avatar billede barentsen Novice
16. januar 2008 - 12:53 #2
Det må gerne være vba kode.

Den nye liste må gerne komme i et nyt ark.
Avatar billede jlemming Nybegynder
16. januar 2008 - 13:54 #3
Prøv dette:

sortere kolonne B i sheet1
dobbelt i sheet2
enkelt i sheet3


Sub Button5_Click()
   
    col = 2                            ' tjek kolonne
    Set ark = Worksheets("sheet1")      ' hent fra ark
    Set tilark = Worksheets("sheet2")
    Set tilark2 = Worksheets("sheet3")
    t = 1                              ' start i række
    t2 = 1
    rk = 1
   
    ark.Select
    Columns("B:B").Select
    Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    ' sæt overskrifter
    tilark.Range(t & ":" & t).EntireRow.Value = ark.Range(rk & ":" & rk).EntireRow.Value
    tilark2.Range(t2 & ":" & t2).EntireRow.Value = ark.Range(rk & ":" & rk).EntireRow.Value
    t = t + 1
    t2 = t2 + 1
    mylastrow = ark.Cells(ark.Rows.Count, 1).End(xlUp).Offset(0, 0).Row
    For rk = mylastrow To 2 Step -1
        If Cells(rk, col).Value = Cells(rk + 1, col).Value Or Cells(rk, col).Value = Cells(rk - 1, col).Value Then
            tilark.Range(t & ":" & t).EntireRow.Value = ark.Range(rk & ":" & rk).EntireRow.Value
            t = t + 1
        Else
            tilark2.Range(t2 & ":" & t2).EntireRow.Value = ark.Range(rk & ":" & rk).EntireRow.Value
            t2 = t2 + 1
        End If
    Next rk

End Sub
Avatar billede barentsen Novice
16. januar 2008 - 14:41 #4
Perfekt - den virker lige efter hensigten.
Tak for hjælpen - Smid et svar!
Avatar billede jlemming Nybegynder
16. januar 2008 - 15:01 #5
velbekomme :o)

Husk at du kun skal lægge dine svar som kommentar
Avatar billede jlemming Nybegynder
23. januar 2008 - 10:07 #6
Husk at accepter svaret, vælg mit navn i nedeste venstre hjørne og tryk accepter
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