• 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.

vergelijken rijen

Status
Niet open voor verdere reacties.

koenmeul

Nieuwe gebruiker
Lid geworden
11 feb 2008
Berichten
4
Ik wil graag 2 rijen van ieder 5 kolommen met elkaar vergelijken en de verschillen zien.
Zie voorbeeld bijlage.

In lijst 2 zijn zaken toegevoegd die niet in lijst 1 staan. Deze toevoegingen zou ik als resultaat willen hebben samen met het unieke nummer wat in kolom A staat ( of G, zijn namelijk dezelfde nummers )

Het moet volgens mij met een VBA code.Bekijk bijlage voorbeeld.xlsx

Alvast bedankt voor de hulp.
 
De verschillen zien kan met Voorwaardelijke Opmaak, zie bijlage.
 

Bijlagen

Beste WHER,

bedankt voor je uitleg, maar dit kan volgens mij alleen als de unieke nummers in dezelfde rij staan. Nu is het zo dat in lijst 2 wel eens nieuwe unieke nummers zitten die nog niet in de oude lijst zitten. Sorteren is dan ook geen oplossing aangezien ze dan nog niet altijd in dezelfde rij staan om te vergelijken..

Evengoed bedankt voor het meedenken!
 
Code:
Sub tst()
    Dim ResArr() As Variant, sn As Variant, sq As Variant
    Dim x As Integer, i As Integer, ii As Integer
    With Sheets("Blad1")
    sn = .Range("A3:E10")
    sq = .Range("G3:K10")
    ReDim ResArr(1 To UBound(sn), 1 To UBound(sn, 2))
    x = 1
        For i = 1 To 8
            For ii = 1 To 5
                If sq(i, ii) <> sn(i, ii) Then
                    ResArr(x, 1) = sq(i, 1)
                    ResArr(x, 2) = sq(i, ii)
                    x = x + 1
                End If
            Next
        Next
    With .Cells(3, 13)
        .CurrentRegion.ClearContents
        .Resize(UBound(ResArr), UBound(ResArr, 2)) = ResArr
    End With
    End With
End Sub
 
Rudi,

helemaal super!!! Dat is precies wat ik bedoel!
Bedankt allemaal voor het meedenken!
 
hallo, deze werkt ook als ze niet gesorteerd zijn
Code:
Sub test()
    Dim Uitvoer As Range: Set Uitvoer = [M3]
    Dim Oud As Range: Set Oud = [A3:E10]
    Dim Nieuw As Range: Set Nieuw = [G3:K10]
    Dim IDnrNieuw As Range, IDnrOud As Range
    Dim IDnrsOud As Range: Set IDnrsOud = Oud.Resize(, 1)
    Dim IDnrsNieuw As Range: Set IDnrsNieuw = Nieuw.Resize(, 1)
    Dim K As Integer
    Uitvoer.CurrentRegion.ClearContents
    For Each IDnrNieuw In IDnrsNieuw
        Set IDnrOud = IDnrsOud.Find(IDnrNieuw)
        If IDnrOud Is Nothing Then
            Uitvoer = IDnrNieuw
            Set Uitvoer = Uitvoer(2, 1)
            Else
            For K = 2 To Nieuw.Columns.Count
                If IDnrOud(1, K) <> IDnrNieuw(1, K) Then
                    Uitvoer = IDnrNieuw
                    Uitvoer(1, 2) = IDnrNieuw(1, K)
                    Set Uitvoer = Uitvoer(2, 1)
                End If
            Next K
        End If
    Next
End Sub

groet sylvester

ps als in nieuw een rij niet meer voorkomt die wel in oud staat, dan wordt dat niet opgemerkt.
 
Beste Sylvester-Ponte,

de VBA code van jouw werkt uitstekend. Nu vraag ik me alleen af of het volgende mogelijk is:

Stel dat in lijst 2 niet alleen cel I3 gewijzigd is, maar ook cel J3 van dezelfde rij. Met jouw macro krijg je dan de uitkomst onder elkaar,
dus bijvoorbeeld
632285 13-2012
632285 Transporter GP (600)

Nu is mijn vraag of het mogelijk is dat de uitkomst niet onder elkaar komt, maar meer in de zin van:

632285 13-2012 Transporter GP (600)

Dus maar 1 keer het nummer met de verschillen erachter?

Ik ben benieuwd of dat technisch mogelijk is?

Alvast bedankt voor jullie uitleg!
 
zo iets?
Code:
Sub test()
    Dim Uitvoer As Range: Set Uitvoer = [M3]
    Dim Oud As Range: Set Oud = [A3:E10]
    Dim Nieuw As Range: Set Nieuw = [G3:K10]
    Dim IDnrNieuw As Range, IDnrOud As Range
    Dim IDnrsOud As Range: Set IDnrsOud = Oud.Resize(, 1)
    Dim IDnrsNieuw As Range: Set IDnrsNieuw = Nieuw.Resize(, 1)
    Dim K As Integer
    Uitvoer.CurrentRegion.ClearContents
    For Each IDnrNieuw In IDnrsNieuw
        Set IDnrOud = IDnrsOud.Find(IDnrNieuw)
        If IDnrOud Is Nothing Then
            Uitvoer = IDnrNieuw
            Set Uitvoer = Uitvoer(2, 1)
            Else
            For K = 2 To Nieuw.Columns.Count
                If IDnrOud(1, K) <> IDnrNieuw(1, K) Then
                    Uitvoer = IDnrNieuw
                    Uitvoer(1, K) = IDnrNieuw(1, K)
                End If
            Next K
            If Uitvoer <> "" Then Set Uitvoer = Uitvoer(2, 1)
        End If
    Next
End Sub
groet sylvester
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan