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

regels samenvoegen

  • Onderwerp starter Onderwerp starter Klus
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Klus

Gebruiker
Lid geworden
16 mei 2007
Berichten
8
Beste,

Ik heb een lijst met zo'n 1000 medewerkers. Daar staat in de eerste kolommen wat naamgegevens en personeelsnummer. Daarachter 7 kolommen genaamd afd.1, afd. 2 etc etc.
Nu staat elke medewerker die toegang heeft tot meerdere afdelingen met meerdere regels genoemd in Excel. In elke regel staat een kruisje in een andere kolom (afd.1 en afd. 3 bijv.)
Als een medewerker dus toegang heeft tot 3 afdelingen staat hij in 3 regels vermeld.

Kan dit via een macro zo geregeld worden dat ik 1 regel overhou waar aan het begin de persoonsgegevens staan met pers . nummer en daarna op diezelfde regel allemaal kruisjes in de juiste kolommen waar hij toegang tot heeft ?

Zie bijlage voor een voorbeeld, fictief doch opbouw van kolommen is hetzelfde.
Alvast dank voor eenieder die er aandacht aan besteedt.

Gr. Marco
 

Bijlagen

Ik heb de rij voor Piet gedaan.
Hiermee kun je de rest van de namen wel zelf aanvullen.

Cobbe
 
Geweldig bedankt Cobbe, :thumb:
Ik ga er mee aan slag en kijken of ik er mee uit kom.
Maandag laat ik weten of het gelukt is.
Nogmaals dank voor je moeite.

Gr. Marco
 
Beste Jack,
Jouw macro is precies wat ik wilde bereiken. Geweldig bedankt.
Zou je me alleen nog willen uitleggen (middels commentaar in de macro of zoiets) wat deze macro allemaal doet en dan vooral op welke manier qua code.
Ik ben nog maar een beginneling en snap hier nog niet veel van, hopelijk kan ik met jouw hulp de macro een beetje analyseren en er wat van opsteken.
Alvast bedankt voor je gedane moeite, het werkt geweldig en scheelt een verschrikkelijke hoop tijd.

@ Cobbe, jij ook bedankt voor je moeite, je code vergde alleen erg veel voorwerk omdat het om meer als 1500 regels gaat. Maar ook daar heb ik weer wat van opgestoken.

Nogmaals dank aan beiden

Gr. Marco
 
Hallo,

Gebruik ook de foutopsporing => Stap (F8)
en kijk hoe de getallen van a, b en c in de code veranderen.

Met vr gr
Jack
Code:
Sub tst()
  With Sheets(1)
    For a = 3 To .Cells(Rows.Count, 3).End(xlUp).Row    'het getal 3 gebruik ik om VANAF rij drie te beginnen met tellen
                                                        '.Cells(Rows.Count, 3).End(xlUp).Row gebruik ik om de laatst gevulde cel in kolom 3 te zoeken
                                                        '(van deze laatst gevulde cel wordt het rijnummer gebruikt)
                                                        
    For b = .Cells(Rows.Count, 3).End(xlUp).Row To a + 1 Step -1    '.Cells(Rows.Count, 3).End(xlUp).Row gebruik ik om de laatst gevulde cel in kolom 3 te zoeken
                                                                    'vanaf deze laatst gevulde cel (rijnummer) wordt er terug naar boven gewerkt (Step -1)
                                                                    'totdat het getal (a + 1) is bereikt

      If .Cells(a, 3).Value = .Cells(b, 3).Value Then       'Hier worden 2 cellen met elkaar vergeleken
                                                            'Cells(a, 3) is niets anders dan     Cells(rijnummer, kolomnummer)
                                                            
         c = .Cells(b, Columns.Count).End(xlToLeft).Column  'Hier wordt in rij b vanaf rechts naar links naar de eerste gevulde cel gezocht
                                                    
             .Cells(a, c).Value = .Cells(b, c).Value        'Hier wordt de gevonden cel in (rij b, kolom c) naar (rij a, kolom c) gekopieerd
             
             .Rows(b).EntireRow.Delete                      'Hier wordt rij b verwijdert
      End If
      
    Next 'volgende b
    Next 'volgende a
  End With
End Sub


'Dit alles zijn 2 lussen (2x For gebruikt)
'Er wordt begonnen bij C3 (1e lus a)
'(2e lus b) word elke cel vanaf C13 tot C4 met C3 vergeleken
'Als 2 cellen dezelfde waarde hebben wordt er naar de x gezocht en gekopieerd

'Pas als de 2e lus is afgewerkt wordt C4 vergeleken met de cellen in de 2e lus
'Pas als de 2e lus is afgewerkt wordt C5 vergeleken met de cellen in de 2e lus
'etc
 
Bedankt

Beste Jack,
bedankt voor je uitleg. Ik begrijp wat je gedaan hebt, zou het alleen nog niet zelf kunnen verzinnen. Hopelijk komt dat ook nog.

Goeie uitleg.

Gr. Marco
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan