vergelijken van gegevens in excel

Status
Niet open voor verdere reacties.

Robert Smidt

Gebruiker
Lid geworden
26 mei 2009
Berichten
947
Hallo,

Ik ben op zoek naar een macro die twee werkbladen met elkaar vergelijkt en de overeenkomsten bijv. een andere kleur geeft (rood) of dat er een kolom wordt aangemaakt waar een tekst in staat dat de regel overeenkomt met een regel van het andere werkblad.

Als voorbeeld: in werkblad 1 staan allemaal regels met namen, adressen, woonplaatsen enz. van klanten (bijv. 100 stuks). In werkblad 2 staan ook namen, adressen en woonplaatsen (bijv. 10 stuks), maar weet ik niet of deze ook voorkomen in werkblad 1.

Ik denk dat een postcode en naam vrij unieke gegevens zijn, echter kan het zijn dat de naam in het ene werkblad anders gespeld is dan in het andere werkblad (bijv. naam, vrl / vrl, naam). dus zal er een zoekopdracht moeten komen die bij benadering een gegeven vindt. wellicht zou het huisnummer ook kunnen maar staat daar het adres weer voor.

Wie kan mij helpen met dit probleem, alvast bedankt
 
Als er tenminste één kolom is waar wel dezelfde spelling in voorkomt kun je dit gebruiken:
Code:
Private Sub CommandButton1_Click()
   With Sheets(2)

      For rgls2 = 1 To 10             'Doorloop de 10 regels in blad2
         For col = 1 To 8                'Doorloop van deze regel de 8? kolommen in blad2
            For rgls1 = 1 To 100      'Doorloop de 100 regels van dezelfde kolom in blad1
      
               If .Cells(rgls2, col).Value = Sheets(1).Cells(rgls1, col).Value Then    'Is inhoud hetzelfde, dan:
                  .Cells(rgls2, col + 8).Value = .Cells(1, col).Value & _
                  " zelfde als " & Mid("ABCDEFGH", col, 1) & rgls1 & " blad 1"
               End If
        
            Next
         Next
      Next
   End With
End Sub
De kolommen in beide bladen moeten dan wel dezelfde soort gegevens bevatten.
Groet, Ed
 
reactie

Bedankt voor jullie reacties.

de manier van wigi is mij niet duidelijk, wanneer ik al die codes moet gebruiken, voor zo'n eenvoudig probleem, zie ik door het bos de bomen niet, of is het de bedoeling dat ik hier één uit moet uithalen. Bovendien is het voor mijn werk en werken we daar nog met een antiek programma van excel (97). Ik moet dus een aparte macro maken en deze d.m.v. aanklikken activeren.

De andere code werkt wel, althans voor een deel. wanneer ik twee rijen (per sheet één) vul en dan de macro er op los laat, vult deze alle velden tot aan kolom P. Alleen in kolom I vermeld hij van de eerste naam die hij gevonden heeft het goede resultaat. In alle andere gevallen geeft hij steeds de eerste naam aan te hebben gevonden. Volgens mij ben ik goed op weg maar schort het nog op een aantal vlakken iets aan.

graag hoor ik weer van jullie.
 
Bedankt voor jullie reacties.

de manier van wigi is mij niet duidelijk, wanneer ik al die codes moet gebruiken, voor zo'n eenvoudig probleem, zie ik door het bos de bomen niet, of is het de bedoeling dat ik hier één uit moet uithalen. Bovendien is het voor mijn werk en werken we daar nog met een antiek programma van excel (97). Ik moet dus een aparte macro maken en deze d.m.v. aanklikken activeren.

Ga naar: http://www.mrexcel.com/forum/showpost.php?p=331454&postcount=4

Kopieer de code. Plak die in een module in VBA.

Ga naar een lege cel in Excel in datzelfde bestand. Typ:

=FuzzyPercent(

klik een cel aan, geef dan het scheidingsteken in voor formules (puntkomma doorgaans), dan klik je een andere cel aan waarmee je de match wil "berekenen", typ een haakje ) en Enter.

Je krijgt dan de match tussen de 2 teksten, als een percentage. Hoe hoger het getal, hoe groter de match.

Daarnaast heb je nog mogelijkheden om in te geven hoe je de code de mate van overeenkomst wil laten berekenen.

Wigi
 
Probeer eerst wigi z'n code uit, dan heb je nauwkeuriger resultaat.

Mocht je mijn methode willen volgen dan moet je alle 8 kolommen vullen, anders vergelijkt hij 2 lege kolommen en ziet dit als overeenkomst.
OF
Zet deze IF er nog omheen:
Code:
[COLOR="Red"]If .Cells(rgls2, col).Value <>""[/COLOR]   
   If .Cells(rgls2, col).Value = Sheets(1).Cells(rgls1, col).Value Then    'Is inhoud hetzelfde, dan:
      .Cells(rgls2, col + 8).Value = .Cells(1, col).Value & _
      " zelfde als " & Mid("ABCDEFGH", col, 1) & rgls1 & " blad 1"
   End If
[COLOR="red"]End If[/COLOR]
Bij beide bladen moeten op de bovenste regel veldnamen staan (Naam | Adres | Plaats | enz..)

Groet, Ed
 
ik snap er niet veel van

Helaas snap ik de manier van Wigi niet. Ik heb de code gekopieerd naar een macro maar dat werkt niet en aangezien ik op het werk met de oude versie werk (97) is er ook geen ander mogelijkheid dan met een macro te werken. Is het niet mogelijk dat ik een excelbestandje krijg met bijv. 2 data regels waar de code in staat, dan kan ik zelf de data aanpassen. In ieder geval ben ik te onervaren om hier mee te werken.

wat betreft de oplossing van EdWel krijg ik direct al een foutmelding bij de eerste regel, dat kun je ook zien omdat deze in het rood staat, of je heb je voor de duidelijkheid deze regel in het rood gezet.

Ik hoop op een antwoord en wederom alvast bedankt.
 
Hang dan een bestand bij waarin te zien is hoe je een en ander gekopieerd / geplakt hebt.

Mocht het plakken van code in een module te lastig zijn, begin dan eerst met een goed boek over VBA alvorens zulke functies of macro's aan te wenden. Veel duidelijker dan in mijn post (3 posts hierboven) kan ik het ook niet neerschrijven.

Wigi
 
Sorry, ik was Then vergeten.
Zo dan:
Code:
Private Sub CommandButton1_Click()
   With Sheets(2)

   For rgls2 = 2 To 10 'Doorloop de 10 regels in blad2
      For col = 1 To 8 'Doorloop van deze regel de 8 kolommen in blad2
         For rgls1 = 2 To 100  'Doorloop de 100 regels van dezelfde kolom in blad1
         
            If .Cells(rgls2, col).Value <> "" [COLOR="Red"]Then[/COLOR]
               If .Cells(rgls2, col).Value = Sheets(1).Cells(rgls1, col).Value Then     'Is inhoud hetzelfde, dan:
                  .Cells(rgls2, col + 8).Value = .Cells(1, col).Value & _
                  " zelfde als " & Mid("ABCDEFGH", col, 1) & rgls1 & " blad 1"
               End If
            End If
         
         Next
      Next
   Next

   End With
End Sub
Groet, Ed
 
hij doet het

super, bedankt dat van then was idd het probleem. Ik zie dat hij op veel kolommen selecteert, in de praktijk hoeft hij maar op twee kolommen te selecteren, ik neem aan dat dat niet zo moeilijk is om dat te veranderen in de code, Misschien zou je een kleine variant mee kunnen sturen waarop ik kan zien dat de code niet met blad 1 vergelijkt, maar met blad 2 en dat hij bijv. alleen de kolommen 1 en 3 gebruikt om te zoeken.

Nogmaals hartelijk bedankt voor de medewerking, dit waardeer ik zeer.
 
Nu je de zaak werkend hebt is het toch niet zo moeilijk de code zelf aan te passen?
With Sheets(1) / For col = 1 to 2 enz....

Succes, Ed
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan