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

Rijen uit verschillende tabbladen met dezelfde waarde in A in 1 rij plaatsen

Status
Niet open voor verdere reacties.

Partis

Gebruiker
Lid geworden
3 sep 2008
Berichten
62
Dag,

Ik wil van een document dat veel groter is dan het voorbeeld via een macro het volgende bereiken:

Ik heb 3 tabbladen met gegevens.
Ik wil een een nieuw tablad alle rijen die dezelfde waarde in de kolom A hebben geplaatst krijgen op 1 rij achter elkaar.

In de bijlage een testdocument met 3 tabbladen.

In tabblad 4 een voorbeeld van wat het resultaat zou moeten zijn.

Wie kan mij helpen?

Alvast bedankt!
 

Bijlagen

komen de waarden in kolom A van de tabbladen altijd op alle tabs voor, net als in het voorbeeld?
 
Dag,

Nee, niet altijd. Dus er kunnen in alle 3 de tabbladen andere waarden voorkomen. Die moeten wel in de nieuwe lijst komen, maar dan zonder 1 of 2 van de extra rijen van de andere tabbladen.
 
Dag Emields,

Dank je voor je reactie. Hij doet het prima, behalve de 3e rij het laatste gedeelte. Daar is het gedeelte van de 3e tabblad een rij lager geplaatst.
 
Nee hoor dat komt doordat jij in sheet3 twee keer hetzelfde ID heb ingevuld.
 
Code:
Sub M_snb()
  sn = Sheet1.Cells(1).CurrentRegion
  sp = Sheet2.Cells(1).CurrentRegion
  sq = Sheet3.Cells(1).CurrentRegion
  
  sf = Array(0, -1, UBound(sn, 2) - 2, UBound(sn, 2) + UBound(sp, 2) - 3)
  ReDim st(UBound(sn) + UBound(sp) + UBound(sq), sf(3) + UBound(sq, 2))
  y = 1
  
  For n = 1 To 3
     sz = Choose(n, sn, sp, sq)
     For j = 2 To UBound(sz)
       If n > 1 Then
            For y = 1 To UBound(st)
              If st(y, 0) = sz(j, 1) or Or st(y, 0) = "" Then Exit For
            Next
       End If
       
       For jj = IIf(n = 1, 1, 2) To UBound(sz, 2)
          st(0, jj + sf(n)) = sz(1, jj)
          st(y, jj + sf(n)) = sz(j, jj)
       Next
       y = y + 1
     Next
   Next
   
   Sheet4.Cells(10, 1).Resize(UBound(st) + 1, UBound(st, 2) + 1) = st
End Sub
 
Laatst bewerkt:
Dag SNB,

Het klopt inderdaad wat je zei. Ik heb het excel nu op de 3 tabbladen met een lijst van wel 3000 rijen geprobeerd, maar hij pakt alleen de 3 eerste rijen. Weet je wat het probleem is?

Hartelijke groeten, Vincent
 
Dag SNB,

En bij jouw ander code krijg ik de volgende foutmelding:

foutmelding.jpg
 
Je kunt zelf wel in het plaatje zien dat jouw bladnamen niet hetzelfde zijn als in het bestand dat je hier geplaatst heb.
Gelukkig maar dat je een 'fout'melding krijgt. ( de melding verzuim je te tonen).

Er wordt niet voor niets om een representatief voorbeeldbestand gevraagd.
Inmiddels heb ik de code vereenvoudigd. zie #7

Maar als je deze melding niet zelf kunt traceren weet je zo weinig van VBA dat ik het volstrekt onverantwoord vind je met deze privacy- en volksgezondheidsgevoelige data te laten werken. Bij welke GGD zit je ? (of LAREB of RIVM ?)
 
Laatst bewerkt:
verander in de code die 500 door 5000

Code:
[CODE]For Each cell In Range("a2:a" & [[COLOR="#FF0000"]a500[/COLOR]].End(xlUp).Row)
[/CODE]
maar als er zoveel rijen zijn is de code van snb veel sneller
 
OK, dank je. Ik ga het proberen.

Het gaat om openbare te downloaden, geanonimisseerde informatie op internet, die iedereen kan downloaden. Dus dit heeft niets met privacy te maken. Het is gewoon voor eigen gebruik en interpretatie.
En ik ben ook niet in die sector werkzaam. ;)

Hartelijke groeten, Vincent
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan