• 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 2 kolommen

Status
Niet open voor verdere reacties.

jarsky

Gebruiker
Lid geworden
19 feb 2009
Berichten
36
Hallo,

ondanks zoek werk op het forum kan ik niet vinden wat ik graag zou willen hebben.
Het moet worden opgenomen in een stukje VBA.

Als voorbeeld wil ik op 2 sheets de kolommen A (in een bepaalde range), met elkaar vergelijken. Als ergens in kolom A op sheet 1 een waarde staat wat niet in ergens in kolom A op sheet 2 staat, dan moet deze waarde worden gekopieerd naar kolom A op sheet 2 op de eerst volgende lege regel. Voorbeeldje bijgevoegd.

Ik zie jullie reactie graag tegemoet.

mvgr Jan
 

Bijlagen

  • Vergelijken.xlsx
    9,3 KB · Weergaven: 46
Test dit eens.

Code:
Sub tst()
  For Each cl In Sheets("Blad2").Range("A2:A10")
   If cl > 0 Then
    Sheets("Blad1").Cells(Rows.Count, 4).End(xlUp).Offset(1) = cl
   End If
  Next cl
For Each cl In Sheets("Blad1").Range("A3:A8")
  If WorksheetFunction.CountIf(Sheets("Blad1").Range(Cells(3, 1), Cells(Rows.Count, 4).End(xlUp)), cl) = 1 Then
     Sheets("Blad1").Cells(Rows.Count, 4).End(xlUp).Offset(1) = cl
   End If
  Next
End Sub
 

Bijlagen

  • Vergelijken.xlsm
    15,3 KB · Weergaven: 33
Vergelijken

Harry,

bedankt voor de snelle reactie, maar het werkt niet helemaal zoals ik bedoelde.
ik had echter misschien wat duidelijker moeten zijn.
Ik had in het voorbeeld even fictief blad 1 en blad 2 bij elkaar gedaan om het wat duidelijker te maken. Nogmaals een voorbeeld.

Blad 1 bevat namen kolom A en blad 2 bevat namen kolom A. Echter, als op blad 1 een naam staat die niet in blad 2 voorkomt dan moet deze naam op blad 2 worden bijgevoegd onder de laatste naam. De namen die al op blad 2 stonden mogen niet worden verplaatst. Tevens mogen de namen die wel op blad 2 voorkomen maar niet op blad 1 niet worden verwijderd.

Bijgevoegd een nieuwe sheet met maar nu dan met blad 1 en blad 2 gevuld.

Gr Jan



gr Jan
 

Bijlagen

  • Vergelijken.xlsm
    9,1 KB · Weergaven: 29
Laatst bewerkt:
Jan,

Code:
Sub tst()
 For Each cl In Sheets("Blad1").Range("A2:A8")
  With Sheets("Blad2")
   If WorksheetFunction.CountIf(.Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)), cl) = 0 Then
    .Cells(.Rows.Count, 1).End(xlUp).Offset(1) = cl
   End If
  End With
 Next
End Sub
 
Uiteraard de range variabel maken Jan. ;)
 
Zonder worksheetfunction (als snelheid belangrijk is)
Code:
Sub test()
    With Sheets("Blad2")
        sq = .Range("A2:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
    End With
    For j = 1 To UBound(sq)
        sn = sn & "|" & sq(j, 1)
    Next
    For Each cl In Sheets("Blad1").Range("A3:A" & Sheets("Blad1").Cells(Rows.Count, 1).End(xlUp).Row)
            If InStr(sn, cl) = 0 Then
                Sheets("Blad2").Range("A65536").End(xlUp).Offset(1) = cl
             End If
        Next
End Sub
 
Weer even open gezet met de volgende aanvullende vraag.
is het mogelijk om bij deze actie eventueel een tweede kolom mee te nemen. Het gaat dan om een waarde in kolom B op blad 1 die mee moet worden genomen als waarde in kolom B op blad 2.
Hier hoeft geen vergelijking op plaats te vinden. Dus bij de vergelijking zoals eerder omschreven moet alleen de waarde uit kolom B mee worden genomen in dezelfde rij.

Gr Jan
 
Laatst bewerkt:
Code:
Sub test()
    With Sheets("Blad2")
        sq = .Range("A2:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
    End With
    For j = 1 To UBound(sq)
        sn = sn & "|" & sq(j, 1)
    Next
    For Each cl In Sheets("Blad1").Range("A3:A" & Sheets("Blad1").Cells(Rows.Count, 1).End(xlUp).Row)
            If InStr(sn, cl) = 0 Then
                With Sheets("Blad2").Range("A65536").End(xlUp)
                    .Offset(1) = cl
                    .Offset(1, 1) = cl.Offset(, 1)
                End With
             End If
        Next
End Sub
 
Wederom, bedankt voor de snelle reactie. Werkt helemaal zoals ik wilde.
Nogmaals bedankt.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan