[VB6] excel lijst doorlopen

Pagina: 1
Acties:

  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
Ik heb een excel document (geëxporteerd van een access tabel) waar een aantal identieke rijen in voorkomen (buiten 1 of 2 velden in de rij die verschillend zijn).
bijvoorbeeld:
kolomA     kolomB (ID)     kolomC
1              ID1                  a
2              ID2                  b
3              ID3                  c
3              ID3                  d
3              ID3                  e
4              ID4                  f
5              ID5                  g

De waardes uit kolom C moeten achternaan de 1ste rij geplaatst worden waar het ID veld identiek is. Het resultaat moet dus worden:

kolomA     kolomB     kolomC     kolomD     kolomE
1              ID1           a
2              ID2           b
3              ID3           c               d               e
4              ID4           f	
5              ID5           g

Dit is me gelukt. Ik maak gebruik van een aantal lussen waar ik het document rij per rij doorloop & gegevens verplaats naar de juiste rij.

kort voorbeeld weer:
neem het ID veld van de 1ste rij. Komt dit overeen met die in de 2de rij? Zoja, pak dan veldC uit de 2de rij en plak deze in de eerst vrije kolom in rij1. Verhoog vervolgens de teller en vergelijk het ID veld met het IDveld uit de 3de rij (en zo tot de laatste rij) Wis ook telkens de rij als er gegevens verplaatst zijn, want deze is dan niet meer nodig.

Vervolgens: verhoog de 1ste teller met 1 en onthou het ID veld uit de 2de rij. Kijk nu of dit veld overeenkomt met het ID veld uit de 3de rij, 4de, 5de, ...

Dan weer: neem het ID veld uit rij 3 en vergelijk deze met het veld in rij 4, 5, ...

Voor enkele rijen is dit wel te doen. Bij een excel document met enkele duizenden rijen is de vertraging veel te groot. Ik heb het ook al geprobeerd met uit de lus te springen als het ID veld van de volgende rij niet meer overeenkomt (de records zijn dan gesorteerd op ID), maar dat is nog niet voldoende.

Weet iemand een betere manier? Ik ben de oplossing misschien veel te ver gaan zoeken (ik dacht eerst aan een query rechtstreeks in access, maar het aantal velden dat verplaatst moet worden is verschillend. Dus ik kan niet altijd eerst een tabel gaan aanmaken met voldoende vrij velden...).