Toon posts:

Macro Ontdubbelen Excel

Pagina: 1
Acties:
  • 2.695 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Weet iemand of

het mogelijk is om een excel macro te schrijven die een database ontdubbelt?, aan de hand van vooraf ingestelde criteria, bijv. als de kolom PLAATS identiek is én de kolom ACHTERNAAM én de kolom VOORLETTER, (als er meer dan twee records gelijk zijn) dat deze record dan bijvoorbeeld gemarkeerd wordt 'rood' of gewist wordt, of beter nog naar een ander werkblad gekopieerd wordt zodat er manueel geverifieerd kan worden?

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Zit je brondata ook in Excel of in een aparte database?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
in excel, (xls of soms csv)

Verwijderd

Topicstarter
ik bedenk me net dat er problemen kunnen zijn bij Plaatsnamen als bijvoorbeeld 'Den Haag / 's Gravenhagen' of anderssoortige notaties van adresssen Gr. Lindenlaan ipv Graaf Lindenlaan, is het mogelijk om een record die 'verdacht' veel op een ander lijkt maar niet aan 'alle' criteria voldoet' dan bijvoorbeeld te markeren in een opvallende kleur?
:P

  • mfz11
  • Registratie: Juli 2005
  • Laatst online: 27-10 22:07
Zit hier dus met het zelfde probleem, ik moet nu per maand zo'n 2.000 adressen ontdubbelen.

Ik heb 2 excel bestanden die ontdubbeld moeten worden ik doe dat nu zo.

- Ik maak het 2e bestand rood qua lettertype.
- voeg de 2 bestanden samen
- sorteer ze op naam en straatnaam
- verwijder handmatig de dubbele

vooral het handmatig verwijderen is veel werk. De evetuele twijfelachtige dubbele kunnen gewoon blijven staan dat is nooit zo'n probleem.

Ben zelf al met macro's een beetje aan de slag gegaan maar helaas is mijn kennis daar niet zo heel erg hoog van.

Ik hoop de de Prof's wel een mooie oplossing hebben.

Alvast bedankt

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 09:41
Tuurlijk is dat mogelijk.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
[nepcode]
For record = 1 to aantalrecords
 For vergelijkmet = record to aantalrecords
  gelijkenis = 0
  For kolom = 1 to aantalkolommen
   If activesheet.cells(record, kolom)=activesheet(vergelijkmet,kolom) then gelijkenis = gelijkenis +1
  Next kolom
  if gelijkenis>0 then 'je kan hier ook >1 of zo invullen natuurlijk
  activesheet.cells(record, aantalkolommen+1).value=activesheet.cells(record, aantalkolommen+1).value & " " & gelijkenis & " gelijken met rij " & vergelijkmet
'je kan hier ook bijvoorbeeld activesheet.rows(vergelijkmet).delete proberen, maar da's op eigen risico.
  end if
 Next vergelijkmet
next record

Dit is overigens een vrij botte en langzame manier (die wel veel vindt). Je kan overwegen na het vinden van een match niet verder te zoeken naar volgende matches bij dat record.
[nagekomen hersenburpsels]
Overigens, een na schande wijs tip, laat je macro ergens invullen waar de gelijke dan zit. Kleurtjes (regel je overigens met cells().interior.fontcolor) zijn leuk maar helpen je natuurlijk geen steek verder als je niet alleen wilt weten dat er een dubbele is, maar ook waar 'ie is.
Bij chaotische NAW lijsten is automatisch verwijderen meestal niet heel slim. Veel verder dan een pre-selectie kom je niet, handmatig controleren blijft vaak nodig.

[ Voor 36% gewijzigd door onkl op 14-09-2005 11:05 ]


Verwijderd

Topicstarter
super! mijn dank is groot _/-\o_

  • Supersheep40
  • Registratie: Februari 2001
  • Niet online
Het kan nog makkelijker binnen Excel, met gewone formules.

Combineer de kolomwaarden waar je op wilt gaan vergelijken: =A2&B2&C2
In dit geval A B en C dus. Vervolgens kopieer je de formule over al je regels. Als je dat doet met de zogenaamde vulgreep, past ie automatisch overal de 2 in het goede regelnummer aan.
Als deze formules nu in kolom D staan zet je daar als formule: =AANTAL.ALS($D$2:D2;D2)
Als je deze kopieert over de hele kolom blijft de eerste D2 gelijk en de rest past zich aan het regelnummer aan. (Vanwege de $). Hij telt nu telkens het aantal voorkomens van een waarde.

Elk eerste voorkomen van een waarde heeft nu waarde 1 in kolom D, en elk dubbele waarde een 2 of hoger. Autofilter op kolom D, waarde 1 en klaar!
Pagina: 1