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

data van sheets samenvoegen

Status
Niet open voor verdere reacties.

Bjorkie

Gebruiker
Lid geworden
12 sep 2017
Berichten
147
Hoi allen,
ik zoek een manier om de data van verschillende sheets, samen te voegen in 1 sheet.
probleem, het aantal rijen is variabel, en ook niet alle kolommen staan op de zelfde plaats.
ik heb een kort sample gemaakt.
Op het eerste sheet, wil ik de gezamelijke lijst van de 2 andere hebben, maar enkel de data van de kolommen in het 'geel'.
de andere zijn niet belangrijk.
liefst met formules, maar indien handiger en meer flexibel met VBA, mag ook (ben daar wel geen handige in in VBA)
 

Bijlagen

u gebruikt de omgekeerde wereld, beter is het 1 tabblad met in een tabel al uw gegevens. daar kan je dan uit filteren wat je wil.
 

Bijlagen

Om de snelheid er een beetje in te houden:) En iets flexibeler mits de kolomkoppen altijd gelijk zijn. Je kan overigens beter met jouw gegevens in A1 beginnen en er tabellen van maken.

Code:
Sub VenA()
  x = Split("Item nummer beschrijving afbeelding prijs")
  With Sheets("Combinatie").Cells(3, 1).CurrentRegion.Offset(1)
    .ClearContents
    Set d = CreateObject("Scripting.Dictionary")
    For Each sh In Sheets
      If sh.Name <> .Parent.Name Then
        c00 = ""
        ar = sh.Cells(3, 1).CurrentRegion
        y = Application.Index(ar, 1, 0)
        For j = 0 To UBound(x)
          c00 = c00 & "|" & Application.Match(x(j), Application.Transpose(y), 0)
        Next j
        For j = 2 To UBound(ar)
          y = Application.Index(ar, j, Split(Mid(c00, 2), "|"))
          d(sh.Name & "|" & j) = Array(y(1), y(2), y(3), y(4), y(5))
        Next j
      End If
    Next sh
    .Resize(d.Count, 5) = Application.Index(d.items, 0, 0)
  End With
End Sub
 
He VanA,
ik heb eventjes jouw code ingevoerd in het effectieve bestand en getest, en bekom volgende foutmelding (runtime error 13)
geeft de foutmelding op volgende regel:
For j = 0 To UBound(x)
c00 = c00 & "|" & Application.Match(x(j), Application.Transpose(y), 0)

kan je misschien even uitleggen wat deze juist doet? zodat ik kan snappen wat er mis loopt.
het enige wat ik gedaan heb is de opsomming van de namen in de "split" lijst aangepast aan de warden in het bestand.
(ik zou graag wat beter kunnen begrijpen wat je juist geschreven hebt :d )
 
@ Emields: voor jou ook, bedant voor jouw input.
ik ga nog eventjes moeten bekijken hoe ik dee dien aan te passen, want in de werkelijkheid gaat het over een document, waar alle artikels opgelijst staan op een 10-tal sheets met elk een 1000tal rijen. Ik wil een soort van automatisme maken waarbij ik all deze data, in 1 sheet copieer. met ook alles in de juiste kolom en volgorde.
 
Er wordt niet voor niets altijd om representatieve voorbeelden gevraagd! Gebruik de ingebakken debug mogelijkheden om te zien wat er fout gaat.
 
Geen idee over een groot bereik, maar deze doet er met de snelheid in het voorbeeldbestand niet voor onder.
 

Bijlagen

Hey Allen, bedankt. ik heb het nodige antwoord gevonden.
top antwoorden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan