Avatar billede tida Juniormester
28. maj 2003 - 12:29 Der er 14 kommentarer og
1 løsning

Sammenlign 2 kolonner

Med hvilken funktion sammenligner jeg bedst om et kontonummer i kolonne A også forekommer i kolonne B
28. maj 2003 - 12:31 #1
Det kan jo gøres med LOPSLAG inden i en ER.FEJL inden i en HVIS *GG* Fik du den Tina ?
28. maj 2003 - 12:32 #2
=HVIS(ER.FEJL(LOPSLAG(A1;B:B;1));"NOT";"YES")
28. maj 2003 - 12:33 #3
=HVIS(ER.FEJL(LOPSLAG(A1;B:B;1;0));"NOT";"YES") 
(manglede lige ;0 )
Avatar billede Chewie Novice
28. maj 2003 - 12:35 #4
denne er lavet af bak og testet på 20.000 x 20.000 rækker ....... det laver den på ca. 5 sekunder


Sub Init_Compare()
'''Dim af variable
    Dim TB1 As Range, TB2 As Range, TB3 As Range, TB4 As Range
    Dim Temp As Range
    Dim IndexCol1 As Long, IndexCol2 As Long
    Dim StartTid As Double
    Dim ReturnArray As Variant
   
    Set TB1 = Sheets("NyListe").Range("A1:F1") '1. inputområde
    Set TB2 = Sheets("FastListe").Range("A1:f1") '2. inputområde
   
    Set TB3 = Sheets("ResultatListe").Range("A1")    '1. outputområde
    Set TB4 = Sheets("ResultatListe").Range("A1")    '2. outputområde
    IndexCol1 = 2  'anden kolonne i TB1 (B)
    IndexCol2 = 2  'anden kolonne i TB2 (B)
   
    StartTid = Timer
   
    DoCompare2Lists TB1, TB2, IndexCol1, IndexCol2, ReturnArray
    Set TB3 = TB3.Resize(UBound(ReturnArray, 1), UBound(ReturnArray, 2))
    TB3 = ReturnArray
   
    DoCompare2Lists TB2, TB1, IndexCol2, IndexCol1, ReturnArray
    Set TB4 = TB4.Resize(UBound(ReturnArray, 1), UBound(ReturnArray, 2))
    TB4 = ReturnArray
   
    Set ReturnArray = Nothing
    Application.ScreenUpdating = True
    MsgBox "Færdig  tid : " & Timer - StartTid
    Sheets("ResultatListe").Select
End Sub

Sub DoCompare2Lists(WS1 As Range, WS2 As Range, SearchCol1 As Long, SearchCol2 As Long, aForskel As Variant)
  Dim xCol As Scripting.Dictionary
  Dim Fundet As Boolean, Last1 As Long, Last2 As Long
  Dim Cols2 As Long
  Dim i As Long, z As Long, x As Long
 
  Set xCol = New Scripting.Dictionary
  Cols2 = WS2.Columns.Count
  Last1 = WS1.Cells(65536, SearchCol1).End(xlUp).Row
  Last2 = WS2.Cells(65536, SearchCol2).End(xlUp).Row
  ReDim aForskel(Last2, Cols2)
  z = 0
 
  On Error Resume Next
  With WS1
      For i = 1 To Last1
        xCol.Add Item:=CStr(.Cells(i, SearchCol1)), Key:=CStr(.Cells(i, SearchCol1))
      Next
  End With
  With WS2
      For i = 1 To Last2
        Fundet = xCol.Exists(CStr(.Cells(i, SearchCol2)))
        If Not Fundet = True Then
            z = z + 1
            For x = 1 To Cols2
              aForskel(z, x) = .Cells(i, x)
            Next
        End If
        Fundet = True
      Next
  End With
  Set xCol = Nothing
End Sub
Avatar billede Chewie Novice
28. maj 2003 - 12:36 #5
hmm ... skal måske omskrives lidt til dit formål
28. maj 2003 - 12:37 #6
Der er forøvrigt et men ved LOPSLAG - listen skal være sorteret - er den ikke det kan SLÅ.OP bruges i stedet:
=HVIS(ER.FEJL(SLÅ.OP(A1;B:B));"NOT";"YES")

En Compare-Dims findes også her:
http://www.win-consult.com/SmartOffice/Produkter/Compare2Column.asp
Avatar billede tida Juniormester
28. maj 2003 - 12:45 #7
Hvad med funktionen sammenlign.....lyder jo godt.
Men er ikke helt med på det med 0, 1 eller -1
28. maj 2003 - 12:50 #8
Fra hjælpen:

Sammenligningstype  er tallene -1, 0 eller 1. Sammenligningstype angiver, hvordan opslagsværdi sammenlignes med værdier i opslagsmatrix.

Hvis sammenligningstype er 1, finder SAMMENLIGN den største værdi, der er mindre end eller lig med opslagsværdi. Opslagsmatrix skal være sorteret i stigende rækkefølge:...-2, -1, 0, 1, 2, ... A-Å, FALSK, SAND.

Hvis sammenligningstype er 0, finder SAMMENLIGN den første værdi, der er helt identisk med opslagsværdi. Opslagsmatrix kan være sorteret i en hvilken som helst rækkefølge.

Hvis sammenligningstype er -1, finder SAMMENLIGN den mindste værdi, der er større end eller lig med opslagsværdi. Opslagsmatrix skal være sorteret i faldende rækkefølge: SAND, FALSK, Å-A,...2, 1, 0, -1, -2,... osv.

Hvis sammenligningstype udelades, forudsættes værdien 1.
28. maj 2003 - 12:51 #9
Du skal nok lege med NUL
Avatar billede tida Juniormester
28. maj 2003 - 12:56 #10
Jeg har selvfølgelig ligget og leget lidt med LOPSLAG inden jeg stillede spørgsmålet her....mit problem er at HVIS og LOPSLAG hvis ikke har det så godt sammen. Jeg kan godt få en liste frem med sammenfaldende tal...men er ikke interesseret i at få fejlen #it når der ikke er sammenfald.

Jeg tror sammenlign er bedre med HVIS og ER.FEJL.....og prøver lige med 0
28. maj 2003 - 12:58 #11
ja og slå.op er bedre end lopslag, hvis data ikke er sorteret - jeg smutter nu - god fornøjelse
Avatar billede tida Juniormester
28. maj 2003 - 13:48 #12
Tak Flemming
28. maj 2003 - 21:56 #13
:-)
Avatar billede katborg Praktikant
28. maj 2003 - 23:42 #14
lopslag virker da ganske udemærket selv data ikke er sorteret, når man bruger "0", så skal der jo findes en eksakt værdi.
Avatar billede katborg Praktikant
28. maj 2003 - 23:42 #15
Glemte lige "om"

lopslag virker da ganske udemærket selv OM data ikke er sorteret, når man bruger "0", så skal der jo findes en eksakt værdi.
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