Avatar billede hubertus Seniormester
24. maj 2011 - 19:34 Der er 2 kommentarer og
1 løsning

Sammenligning af kolonner og find identiske datasæt

Jeg har tidligere fået hjælp til nedenstående kode.
Den oprindelige opgave lød som følger:

Jeg har to kolonner (A og B) med kontonumre. Der er mange sammenfald i de to kolonner. Jeg ønsker at få identiske ordrenumre til at stå ud for hinanden.

Jeg har brug for at få udvidet koden, således at der er 4 kolonner, hvor det ene data sæt: kolonne A og B indeholder kontonummer og navn, og det andet datasæt: D og E indeholder kontonummer og navn. De to datasæt skal sammenlignes og identiske ordrenumre placeres overfor hinanden.

Er der en som kan hjælpe?



Sub Makro1()
    Dim Data As Variant, RW(2) As Long, I As Long, N As Long, OK As Boolean, X As Long, Data1 As Variant
    RW(1) = Range("A65536").End(xlUp).Row + 1
    RW(2) = Range("B65536").End(xlUp).Row + 1
    Data = Range("A:B")
    Data1 = Range("G:H")

    Columns("A:A").Select
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
                  OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
                  DataOption1:=xlSortNormal
    Columns("B:B").Select
    Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
                  OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
                  DataOption1:=xlSortNormal




    For I = 1 To UBound(Data)
        OK = False
        If IsEmpty(Data(I, 1)) Then Exit For

        For N = 1 To UBound(Data)

            If Data(I, 1) = Data(N, 2) Then
                If I <> N Then

                    For X = I To UBound(Data)
                        If IsEmpty(Data(X, 2)) Then
                            Data(X, 2) = Data(I, 2)
                            Exit For
                        End If
                    Next

                    Data(I, 2) = Data(N, 2)
                    Data(N, 2) = Empty
                    RW(2) = RW(2) + 1
                End If

                OK = True
                Exit For
            End If

        Next

        If Not OK Then

            For X = I To UBound(Data)
                If IsEmpty(Data(X, 2)) Then
                    Data(X, 2) = Data(I, 2)
                    Data(I, 2) = Empty
                    Exit For
                End If
            Next

        End If
    Next
    X = 1
   
    For I = 1 To UBound(Data)
        If IsEmpty(Data(I, 1)) And Not IsEmpty(Data(I, 2)) Then
            Data1(X, 2) = Data(I, 2)
            X = X + 1
        End If
        If Not IsEmpty(Data(I, 1)) And IsEmpty(Data(I, 2)) Then
            Data1(X, 1) = Data(I, 1)
            X = X + 1
        End If
    Next


    Range("A1").Activate
    Range("D:E") = Data
    Range("G:H") = Data1
End Sub
Avatar billede JeppeH Juniormester
25. maj 2011 - 08:25 #1
Kan du bruge LOPSLAG?

Så kan du i hvert fald se hvilke ordre.nr der går igen og hvilke der ikke gør... :o)
Avatar billede hubertus Seniormester
25. maj 2011 - 09:36 #2
Hej yopoi 
Desværre ikke. Det skal være en udbygning af min VBA kode.
Avatar billede hubertus Seniormester
07. august 2011 - 07:37 #3
Lukketid.
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