Avatar billede Slettet bruger
13. december 2015 - 20:38 Der er 3 kommentarer

Sammenligne kolonner i excel

Hej
Jeg har to kolonner hhv. kolonne A og kolonne B.
Kolonne A kan indeholde op mod 1500 celler med tal, hvor flere af tallene går igen i kolonnen. Kolonne B indeholder op mod ca. 50 celler med tal, hvor tallene ikke gentages i kolonnen.
 
Alle tal i kolonne B går helt sikkert igen i kolonne A, mens kolonne A kan indeholde tal, som ikke figurerer i kolonne B.
Jeg har behov for på en let overskuelig måde at få sorteret ud, hvilke tal i kolonne A, som ikke fremgår af kolonne B. Tallene skal gerne stå samlet under hinanden, så jeg ikke skal rulle ned over 1500 rækker for at se, hvilke tal, der er sorteret ud.

Nedenfor er givet et eksempel, som gerne skulle lette forståelsen af, hvad jeg mener.

Jeg har behov for at få sorteret over i en kolonne for sig, de tal i kolonne A, som ikke fremgår i kolonne B, dvs. i eksemplet 110 og 112.

A        B      svar i kolonne C
101    101    110
101    102    112
101    111
102    115
102 
102
102
110
111
111
112
112
115
115

Håber nogen kan være behjælpelig.
På forhånd mange tak:-)
Avatar billede kabbak Professor
13. december 2015 - 21:10 #1
Kør makroen, når du står på arket

Public Sub Sammenlign()
    Dim Adata As Variant, Bdata As Variant, Cdata As Variant, I As Long, II As Long, RK As Long
    RK = ActiveSheet.UsedRange.Rows.Count
    Range("C1:C" & RK).ClearContents ' tømmer C kolonnen for evt gamle data
    Adata = Range("A1:A" & RK)
    Bdata = Range("B1:B" & RK)
    Cdata = Range("C1:C" & RK)
    '*************************** Fjerne dem som findes i B kolonnen fra A kolonnen
    For I = 1 To UBound(Adata)
        For II = 1 To UBound(Bdata)
            If Adata(I, 1) = Bdata(II, 1) Then Adata(I, 1) = ""
        Next II
    Next I
    '*************************** Fjerne dubletter fra A kolonnen
    For I = 1 To UBound(Adata)
        For II = 1 To UBound(Adata)
            If Adata(I, 1) = Adata(II, 1) And I <> II Then
                Adata(I, 1) = ""
            End If
        Next II
    Next I

    '*************************** samler dem til C kolonnen
    II = 1
    For I = 1 To UBound(Adata)
        If Adata(I, 1) <> "" Then
            Cdata(II, 1) = Adata(I, 1)
            II = II + 1
        End If
    Next
    Range("C1:C" & RK) = Cdata
End Sub
Avatar billede jens48 Ekspert
13. december 2015 - 21:14 #2
Prøv med denne makro:

Sub CheckUniqueNumbers()
LastRow = ActiveSheet.UsedRange.Rows.Count
lastrowcolB = Range("B65536").End(xlUp).Row
y = 1
For x = 1 To LastRow
If Application.CountIf(Range("B1:B" & lastrowcolB), Cells(x, 1)) = 0 _
And Application.CountIf(Range("C1:C" & y), Cells(x, 1)) = 0 Then
Cells(x, 1).Copy Destination:=Cells(y, 3)
y = y + 1
End If
Next
End Sub
Avatar billede kim1a Ekspert
13. december 2015 - 22:07 #3
Ud fra din opgavebeskivelse er dette ikke en løsning, men jeg ville lige give dig en lavpraktisk vinkel også.

Lav et opslag på kolonne A - altså:
=lopslag(A1;B1:B50;1;falsk) så får du tallet gentaget ud for alle dem hvor de er i kolonne B.
Derpå laver du et filter og finder N/A i din nye kolonne.
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