Avatar billede Chewie Novice
01. maj 2003 - 12:05 Der er 22 kommentarer og
1 løsning

Sammenlign ark ---- foreslag

Hej exp´er

Jeg sider med en lille opgave i excel hvor jeg skal sammenligne to meget store lister... resultatet skal være en liste med dem der ikke forkommer på begge liste !!

Arket skal bruges at bruger der har meget lidt kendskab til XL så det skal være meget lige til :o)

Jeg ønsker ikke at få det lavet her, jeg ønsker bare nogle imput til hvordan jeg løser dette på den bedst mulig måde

Har i nogle foreslag ?

chewie
Avatar billede bak Seniormester
01. maj 2003 - 12:29 #1
Er det kun en kolonne pr. liste der skal sammenlignes ?
Avatar billede bak Seniormester
01. maj 2003 - 12:32 #2
Flemming Dahl har faktisk et produkt beregnet lige til dette, men det koster nok lidt. :-) Se hans demo.
http://www.win-consult.com/SmartOffice/Produkter/Compare2Column.asp
Avatar billede Chewie Novice
01. maj 2003 - 12:33 #3
Nej det er ca. 6 kolonner som kan varier lidt på den ene liste ... dog vil der altid være police nr. i B:B
Avatar billede Chewie Novice
01. maj 2003 - 12:33 #4
kigger på det :o)
Avatar billede slo Nybegynder
01. maj 2003 - 12:39 #5
Kig også lige på makroen her - den er gratis :-)
http://www.erlandsendata.no/english/vba/ws/comparews.htm
Avatar billede Chewie Novice
01. maj 2003 - 12:45 #6
bak >> Det er super smart det Flemming har udviklet men det bliver lidt for teknisk .... med installation osv. !

slo >> det er da en marko jeg lige vil prøve at arbejde vidre med :o)
Avatar billede Chewie Novice
01. maj 2003 - 13:38 #7
slo >> den makro du linker til .... kan desværre heller ikke bruges, jeg kan ikke rigtig læse makroen da jeg ikke er så stiv til dem .... men det ser ud til den sammenligner celle for celle .... hvis de to celler er ens bliver den nye celle tom og hvis de ikke er ens bliver der skrevet begge resultater i den nye celle adskilt af <> .... den tager ikke højde for om en anden celler i arket også hedder det samme
Avatar billede kabbak Professor
01. maj 2003 - 13:39 #8
det du søger er det modsatte af denne

http://www.eksperten.dk/spm/315833

kan du ikke lave den om
Avatar billede Chewie Novice
01. maj 2003 - 13:42 #9
Jo ... det ligner noget af det rigtige ..... jeg skal bare have alle dem er ikke finde begger steder
Avatar billede Chewie Novice
01. maj 2003 - 13:47 #10
+ jeg vil have resultaterne skilt ad .... det vil sige at på ark3 vil jeg have en liste over dem på ark1 der ikke er på ark2 !

det skal IKKE være så den at den nye liste på ark3 er en liste over dem der ikke er på ark2 og ikke er på ark1 (hvis i forstår)
Avatar billede Chewie Novice
01. maj 2003 - 13:48 #11
hmm ... jeg kommer vist til at springe nogle bogstaer over ind imellem .... håber i kan læse det aligevel
Avatar billede Chewie Novice
01. maj 2003 - 13:53 #12
kabbak >> vil du prøve at skrive en makro til mig ??
Avatar billede kabbak Professor
01. maj 2003 - 13:53 #13
jeg prøver
Avatar billede Chewie Novice
01. maj 2003 - 13:54 #14
Tak
Avatar billede kabbak Professor
01. maj 2003 - 14:50 #15
Sub Find_Ikke_Ens_I_Ark()
Dim F, C, T, U, A As Integer, Q As Boolean
Application.ScreenUpdating = False
A = 1

Worksheets("Ark1").Activate
F = ActiveCell.SpecialCells(xlLastCell).Row ' Finder ud af hvor mange rækker der er med data på ark1

Worksheets("Ark2").Activate
U = ActiveCell.SpecialCells(xlLastCell).Row ' Finder ud af hvor mange rækker der er med data på ark2

For T = 1 To F
Q = True
For C = 1 To U
Worksheets("Ark1").Activate
If Worksheets("Ark1").Cells(T, 2) = Worksheets("Ark2").Cells(C, 2) Then
Q = False
End If

Next C

If Q = True Then
    Sheets("Ark1").Select
    Rows(T & ":" & T).Select
    Selection.Copy
    Sheets("Ark3").Select
    Rows(A & ":" & A).Select
    ActiveSheet.Paste
    A = A + 1
    Q = False
    Application.CutCopyMode = False
  End If
Next T
Sheets("Ark3").Select
Application.ScreenUpdating = True
Application.CutCopyMode = False
Range("A1").Select
End Sub

sammenligner kun kolonne B i Ark1 og Ark2
Avatar billede Chewie Novice
01. maj 2003 - 14:59 #16
kabbak >> meget lidt redigering og den virker perfekt

Mange tak
Avatar billede kabbak Professor
01. maj 2003 - 16:10 #17
If Worksheets("Ark1").Cells(T, 2) = Worksheets("Ark2").Cells(C, 2) Then
Q = False
GoTo Skift ' indsæt denne linie
End If

Next C
Skift: ' og indsæt også denne linie
If Q = True Then

hej indsæt lige de 2 linier hvor skift indgår, så kører det hurtigere
Avatar billede Chewie Novice
01. maj 2003 - 16:16 #18
resultat

Sub Find_Ikke_Ens_I_Ark()
Dim F, C, T, U, A As Integer, Q As Boolean
Application.ScreenUpdating = False
A = 1

Worksheets("Nyliste").Activate
F = ActiveCell.SpecialCells(xlLastCell).Row ' Finder ud af hvor mange rækker der er med data på ark1

Worksheets("Fastliste").Activate
U = ActiveCell.SpecialCells(xlLastCell).Row ' Finder ud af hvor mange rækker der er med data på ark2

For T = 1 To F
Q = True
For C = 1 To U
Worksheets("Nyliste").Activate
If Worksheets("NyListe").Cells(T, 2) = Worksheets("Fastliste").Cells(C, 2) Then
Q = False
GoTo Skift
End If

Next C

Skift:
If Q = True Then
    Sheets("Nyliste").Select
    Rows(T & ":" & T).Select
    Selection.Copy
    Sheets("ResultatListe").Select
    Rows(A & ":" & A).Select
    ActiveSheet.Paste
    A = A + 1
    Q = False
    Application.CutCopyMode = False
  End If
Next T
Sheets("ResultatListe").Select
Application.ScreenUpdating = True
Application.CutCopyMode = False
Range("A1").Select
End Sub
Avatar billede kabbak Professor
01. maj 2003 - 16:17 #19
yes
Avatar billede Chewie Novice
01. maj 2003 - 16:19 #20
Mange tak

den funkede eller fint .... hvorfor ændre den ?
Avatar billede kabbak Professor
01. maj 2003 - 16:22 #21
når den finder en der er ens, behøver den jo ikke at teste mere med den celle, og så kan den jo godt hoppe ud af sammenligningen og gå videre til den næste.
Avatar billede Chewie Novice
01. maj 2003 - 16:23 #22
OK ... tak ... det også som om den er blevet lidt hurtigere :o)
Avatar billede Chewie Novice
02. januar 2011 - 18:36 #23
Ok ved det er et mega gammelt spørgsmål - jeg har fået brug dette igen og kan nu ikke huske hvordan man får det til at funke.

Har kaldt mine ark "NyListe" "FastListe" og "ResultatListe"
Har copy/paste makro ind i et modul

hvad så ?

-----------------------------
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:H1") '1. inputområde
    Set TB2 = Sheets("FastListe").Range("A1:H1") '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 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