• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

2 lijsten vergelijken verschillen in een ander kolom

Status
Niet open voor verdere reacties.

excelhelp

Gebruiker
Lid geworden
21 jul 2006
Berichten
33
Hallo allemaal,
Ik wil 2 lijsten bestaande uit 2 kolom per lijst met elkaar vergelijken en dan de verschillen in een aparte kolom zien.


Lijst 1----------------------------------------Lijst 2:
1--------------a------------------------------1--------------a
2--------------b------------------------------2--------------b
3--------------c------------------------------3--------------c
4--------------d------------------------------4--------------d
5--------------e------------------------------6--------------f

(i.p.v. de puntjes moet je spatieering inbeelden)

Dus lijst1 vergelijken met lijst2 en dan zijn er maar twee verschillen hier, namelijk:
Lijst 1----------------------------------------Lijst 2:
5--------------e------------------------------6--------------f
dit moet dan weer in een aparte kolom het liefst een formule waarbij het verschil van lijst1 met lijst 2 in een kolom getiteld bijvoorbeeld lijst1 wordt gekopieerd en het verschil van lijst2 met lijst1 in een kolom getiteld bijvoorbeeld lijst2 wordt gekopieerd.
dus uiteindelijk moet het zo eruit zien:

Lijst 1----------------------------------------Lijst 2:------------------------------Lijst 1:------------------------------Lijst 2:
1--------------a------------------------------1--------------a-----------------------5-----------e--------------------------6--------------f
2--------------b------------------------------2--------------b
3--------------c------------------------------3--------------c
4--------------d------------------------------4--------------d
5--------------e------------------------------6---------------f

(i.p.v. de puntjes moet je spatieering inbeelden)

Hopelijk is het duidelijk,
Mark
 
Laatst bewerkt:
Hier is 'ie dan:

Code:
Sub vergelijken()
Dim i As Integer

Columns("E:H").ClearContents
Range("A1:D1").Copy Range("E1")

For i = 2 To Range("A65536").End(xlUp).Row
    If Range("A" & i) <> Range("C" & i) Or Range("B" & i) <> Range("D" & i) Then
        Range("A" & i & ":D" & i).Copy Range("E" & Range("E65536").End(xlUp).Row + 1)
    End If
Next
End Sub

Wigi
 
hallo Wigi.
Ik heb 2 (kleine?) vragen:
1. hoe voer ik een vba formule in excel en deze is neem ik aan wel toepasbaar in een engelse versie van excel?
2. als de gegevens van lijst1 in a2 en b2 staat en verder naar beneden en van lijst2 in c2 en d2 en verder naar beneden en de resultaten van ljist 1 weer in e2 en f2 & van lijst 2 in g2 en h2 moeten verschijnen, wat moet ik dan in je vba-formule veranderen.

Ik heb een bijlage toegevoegd, hoe het eruit moet zien, misschien dat je het daardoor beter begrijpt.
 

Bijlagen

1. hoe voer ik een vba formule in excel en deze is neem ik aan wel toepasbaar in een engelse versie van excel?

- Druk Alt-F11.
- Open jouw bestand in de Project verkenner
- Kies Invoegen > Module
- Plak deze code:

Code:
Sub vergelijken()
Dim i As Integer

Columns("E:H").ClearContents
Range("E1") = "Verschil Lijst 1"
Range("G1") = "Verschil Lijst 2"

For i = 2 To Range("A65536").End(xlUp).Row
    If Range("A" & i) <> Range("C" & i) Or Range("B" & i) <> Range("D" & i) Then
        Range("A" & i & ":D" & i).Copy Range("E" & Range("E65536").End(xlUp).Row + 1)
    End If
Next
End Sub

- Druk Alt-F11 om terug te keren naar Excel.
- Druk Alt-F8 en voer de macro "vergelijken" uit.
- Klaar!

2. als de gegevens van lijst1 in a2 en b2 staat en verder naar beneden en van lijst2 in c2 en d2 en verder naar beneden en de resultaten van ljist 1 weer in e2 en f2 & van lijst 2 in g2 en h2 moeten verschijnen, wat moet ik dan in je vba-formule veranderen.

Niets, mijn code deed dit al.

Wigi
 
Hallo wigi,
het lukt nu wel, alleen is dit niet helemaal wat ik zoek, want je formule vergelijkt elke rij met de ander, dus a2-b2 met c2-d2 et ceterea.
ik zal je de echte lijst geven dus lijst 1 en dan a2 bijv moet in heel de kolom b gezocht worden et cetera.
hopelijk begrijp je het?
 

Bijlagen

Ik begrijp het toch niet helemaal vrees ik.

Wat moet waar opgezocht worden?
Wat moet met elkaar vergeleken owrden?
Wat moet er in de kolommen E,F en G,H komen?

Wigi
 
Kijk, ik leg het altijd te ingewikkeld uit.
Je hebt nu 'Lijst1' en 'lijst 2'.
'Lijst 1' bestaat uit 2 nummers die bij elkaar horen dus 'a2' hoort bij 'b2'.
Ik wil gewoon weten welke nummers in 'lijst 1' staan die NIET in 'lijst 2' staan en welke nummers staan er in 'lijst 2' die niet in 'lijst 1' staan.
Dus 'a2' zoek je op in kolom 'c' en als die daar niet in staat dan verschijnt dit dus 'a2' plus 'b2' in kolom 'verschil lijst 1' in 'e2' en 'f2'.


dus nogmaals, in lijst 1 staan een aantal nummers die niet in lijst 2 staan en vica versa en de verschillen moeten in de desbetreffende lijsten komen?

alvast bedankt, Mark
 
Kijk, ik leg het altijd te ingewikkeld uit.
Je hebt nu 'Lijst1' en 'lijst 2'.
'Lijst 1' bestaat uit 2 nummers die bij elkaar horen dus 'a2' hoort bij 'b2'.
Ik wil gewoon weten welke nummers in 'lijst 1' staan die NIET in 'lijst 2' staan en welke nummers staan er in 'lijst 2' die niet in 'lijst 1' staan.
Dus 'a2' zoek je op in kolom 'c' en als die daar niet in staat dan verschijnt dit dus 'a2' plus 'b2' in kolom 'verschil lijst 1' in 'e2' en 'f2'.


dus nogmaals, in lijst 1 staan een aantal nummers die niet in lijst 2 staan en vica versa en de verschillen moeten in de desbetreffende lijsten komen?

alvast bedankt, Mark


zoiets?
groet Maarten
 

Bijlagen

Heb de file van Maarten nog niet bekeken, maar dit is zoals ik het interpreteer. Denk wel dat het juist is nu.

Code:
Sub vergelijken()
Dim c As Range, lijst1 As Range, lijst2 As Range

Columns("E:H").ClearContents
Range("E1") = "Verschil Lijst 1"
Range("G1") = "Verschil Lijst 2"

Set lijst1 = Range("A2", Range("A2").End(xlDown))
Set lijst2 = Range("C2", Range("C2").End(xlDown))

For Each c In lijst1
    If WorksheetFunction.CountIf(lijst2, c.Value) = 0 Then
        c.Resize(1, 2).Copy Range("E" & Range("E65536").End(xlUp).Row + 1)
    End If
Next

For Each c In lijst2
    If WorksheetFunction.CountIf(lijst1, c.Value) = 0 Then
        c.Resize(1, 2).Copy Range("G" & Range("G65536").End(xlUp).Row + 1)
    End If
Next
MsgBox "Klaar"
End Sub

Wigi
 
hey maartenf, ik begrijp niet zo goed wat je gedaan hebt.
maar wigi als ik de lijst die ik gegeven heb open en je formule intoets dan doet die het perfect maar als ik alle gegevens weghaal en andere gegevens invoer, dan doet die het niet, moet ik dan iets in de formule veranderen misschien?
 
hey maartenf, ik begrijp niet zo goed wat je gedaan hebt.
maar wigi als ik de lijst die ik gegeven heb open en je formule intoets dan doet die het perfect maar als ik alle gegevens weghaal en andere gegevens invoer, dan doet die het niet, moet ik dan iets in de formule veranderen misschien?

er staat een "X" als regel niet voorkomt is ander lijst
 
als ik de lijst die ik gegeven heb open en je formule intoets dan doet die het perfect maar als ik alle gegevens weghaal en andere gegevens invoer, dan doet die het niet, moet ik dan iets in de formule veranderen misschien?

Niets veranderen. Zolang je kolommen A t.e.m. D gebruikt moet het lukken.

Wat doe je dan specifiek anders in vergelijking met de gegevens die je ons gaf?
 
zie bijlage, dan zie je dat c3:d3 niet in lijst 'verschil lijst 2' verschijnt.
alvast bedankt
 

Bijlagen

Maar de 3 uit cel C3 komt toch voor in cel A4 uit lijst 1???
 
nee want de 3:3 van c3:d3 horen bij elkaar dus er moet gezocht worden in paren. want 3:c van a4:b4 staat niet in lijst 2 en de 3:3 van c3:d3 staat niet in lijst 1.
 
Is dit het dan?

Code:
Sub vergelijken()
Dim i As Integer, j As Integer, gevonden As Boolean
Application.ScreenUpdating = False
Columns("E:H").ClearContents
Range("E1") = "Verschil Lijst 1"
Range("G1") = "Verschil Lijst 2"

For i = 2 To Range("A65536").End(xlUp).Row
Application.StatusBar = "Bezig met lijst 1, rij " & i - 1 & " van in totaal " & Range("A65536").End(xlUp).Row - 1 & " rijen"
    gevonden = False
    For j = 2 To Range("C65536").End(xlUp).Row
        If Range("A" & i) = Range("C" & j) And Range("B" & i) = Range("D" & j) Then gevonden = True
    Next
    If gevonden = False Then Range("A" & i & ":B" & i).Copy Range("E" & Range("E65536").End(xlUp).Row + 1)
Next

For i = 2 To Range("C65536").End(xlUp).Row
Application.StatusBar = "Bezig met lijst 2, rij " & i - 1 & " van in totaal " & Range("C65536").End(xlUp).Row & " rijen"
    gevonden = False
    For j = 2 To Range("A65536").End(xlUp).Row
        If Range("C" & i) = Range("A" & j) And Range("D" & i) = Range("B" & j) Then gevonden = True
    Next
    If gevonden = False Then Range("C" & i & ":D" & i).Copy Range("G" & Range("G65536").End(xlUp).Row + 1)
Next
Application.StatusBar = ""
Application.ScreenUpdating = True
End Sub

Wigi
 
Hey wigi, het werkt nu perfect, hartstikke bedankt.
en Maartenf die van jouw werkt ook gewoon perfect, want jullie lijsten zijn identiek, alleen ik heb het nog niet handmatig nagekeken, zal wel goed zijn, alleen maartenf kan je mij als leek zijnde uitleggen hoe ik het moet uitvoeren, waar ik de formule moet intoetsen en welke formule enzovoorts?
alvast hartelijk dank, dit bespaart mij weer heel veel tijd, en kunnen jullie misschien een boek aanraden over vba gebruik in excel is volgens mij makkelijker dan het gebruik van functies?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan